[Résolu][Calc] Erreur d'exécution Basic

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
AGD54
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 19 avr. 2016 13:20

[Résolu][Calc] Erreur d'exécution Basic

Message par AGD54 »

Bonjour,

J'avais un tableau intéressant qui me permettait en entrant un total, à partir d'une liste de valeurs, de retrouver les combinaisons possibles qui me donnait ce total.

Je vous mets en PJ le tableur concerné... ainsi que le message d'erreur que j'obtiens même pour une recherche simple.

Je vous mets ci-dessous la macro incriminée :

REM ***** BASIC *****
Option VBASupport 1
Public avance as Object

Sub Main
BasicLibraries.LoadLibrary("VBAProject")

End Sub


Sub cherche
Dim Tableau() As Currency, Plage As Range, Cel As Range, Boucle As Integer, NbSol As Long, K As Integer
Dim TabCombin, Boucle2 As Integer, Montant As Currency, NbVal As Integer, Mini As Integer, Maxi As Integer
Dim monDocument as Object
Dim lesFeuilles as Object
Dim maFeuille as Object
monDocument = ThisComponent
Dim Ligne as Integer
Ligne=7
avance = monDocument.CurrentController.StatusIndicator
lesFeuilles = monDocument.Sheets
maFeuille =lesFeuilles.getbyName("Somme Match")
avance.start("Veuillez patienter... Je cherche ...",100)
With Application


With Sheets("Somme Match")
Set Plage = .Range("BaseDep", .Range("BaseDep").End(xlDown))
Set Cel = .Range("Sol1")
Range(Cel, Cel.End(xlDown)).Resize(, 300).ClearContents
Montant = .Range("Montant")
Mini = 1
Maxi = Plage.Count
End With

.Calculation = xlCalculationManual
.ScreenUpdating = False

ReDim Tableau(1 To Plage.Count)
For Boucle = 1 To Plage.Count
Tableau(Boucle) = Plage.Cells(Boucle, 1)
Next Boucle
IF lesFeuilles.getbyName("Somme Match").getCellByPosition(2,5).String <>"" OR _
lesFeuilles.getbyName("Somme Match").getCellByPosition(2,5).Value>0 THEN

Mini=lesFeuilles.getbyName("Somme Match").getCellByPosition(2,5).Value
Maxi=lesFeuilles.getbyName("Somme Match").getCellByPosition(2,5).Value
END IF
IF Mini <1 THEN Mini=1

For K = Mini To Maxi
DoEvents
TabCombin = SommeKSurN(Tableau, K, Montant)
If IsArray(TabCombin) Then
For Boucle = LBound(TabCombin, 2) To UBound(TabCombin, 2)
NbSol = NbSol + 1
lesFeuilles.getbyName("Somme Match").getCellByPosition(2,Ligne).Value = NbSol
For Boucle2 = 1 To K
lesFeuilles.getbyName("Somme Match").getCellByPosition(Boucle2+2,Ligne).Value = TabCombin(Boucle2, Boucle)
Next Boucle2
Ligne=Ligne+1
Next Boucle
End If
Next K

.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
End With
avance.end
End Sub


J'espère vous avoir transmis tous les renseignements nécessaires.

Merci d'avance.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par AGD54 le 20 sept. 2021 13:37, modifié 2 fois.
LibO 6.2.7.1.lin1 (x64) (obligation de version)
Windows 10 Professionnel
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25164
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Erreur d'exécution Basic

Message par Dude »

Salut,

L'erreur d'exécution signifie que le code est mauvais.
Donc ça n'aide pas vraiment à comprendre.

En l'occurrence, tu fais appel à :

Code : Tout sélectionner

TabCombin = SommeKSurN(Tableau, K, Montant)
Je ne vois pas cette fonction dans le code que tu publies.

Et je constate également ceci :

Code : Tout sélectionner

Option VBASupport 1
[...]
BasicLibraries.LoadLibrary("VBAProject")
Pour moi, c'est la question qui tue.

PS : merci de faire l'effort d'encadrer ton code correctement comme je le fais, cela facilite la lecture.
Avatar de l’utilisateur
AGD54
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 19 avr. 2016 13:20

Re: [Calc] Erreur d'exécution Basic

Message par AGD54 »

Merci pour la réponse... que je ne comprends pas totalement...

En fait, je suis très novice sur les macros et je dois avouer que ce tableau fonctionnait très bien sur mon ancienne version de libreoffice... mais ayant été obligé de migrer vers une autre version (obligation professionnelle), je me suis retrouvé avec un tableau inutilisable.

Que dois-je envoyer (et où le trouver ?) afin que vous puissiez m'aider ?

Ou alors, un tel tableau (permettant, en entrant un total, à partir d'une liste de valeurs, de retrouver toutes les combinaisons possibles qui me donnent ce total) existe-t-il ?

Encore merci.


PS : si je ne suis pas sur le bon site (j'ai bien peur qu'il n'y ait ici que des pros de LO), peut-être pourriez-vous m'en conseiller un autre ?
LibO 6.2.7.1.lin1 (x64) (obligation de version)
Windows 10 Professionnel
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc] Erreur d'exécution Basic

Message par zeguedon »

Bonjour,

Ton fichier contient une bibliothèque protégée par mot de passe :? ça va pas être simple d'y comprendre quelque chose sans y avoir accès.
@+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
AGD54
NOOuvel adepte
NOOuvel adepte
Messages : 10
Inscription : 19 avr. 2016 13:20

Re: [Calc] Erreur d'exécution Basic

Message par AGD54 »

Merci d'avoir cherché...

Je vais donc devoir continuer à me passer de ce tableau (et merci à l'administration de "bloquer" tous les programmes, macros... )... :marto:
LibO 6.2.7.1.lin1 (x64) (obligation de version)
Windows 10 Professionnel
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Résolu][Calc] Erreur d'exécution Basic

Message par zeguedon »

Bonjour,

Le même problème avait déjà été découvert ici : [Résolu] [Calc] Exécution macro protégée
Tout se passe comme si l'ajout d'un mot de passe à la bibliothèque désactivait la prise en charge VBA. Comme si on retirait, à la macro, la ligne invoquant l'interpréteur VBA :
Conclusion : on ne peut pas exploiter une bibliothèque protégée par mdp si elle contient un code vba
@+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux