Utiliser une macro pour une autre macro
Bonjour,
Je suis étudiant ingénieur en stage et j'ai suivi votre cours sur les macros, qui est très bien.
Je sais coder en mathlab, python et un petit peu en C++ mais j'ai un problème pour excel.
J'ai récupéré et modifié votre module intitulé "champ_recherche".
Le but de ma macro est d'utiliser cette recherche pour inclure la réponse dans une liste sur une autre feuille.
voici mon code :
Private Sub ChargeLesDonnees()
Dim reponse As String
Dim ligne As Integer
Dim variable As String
Range("JB6").Value = "Nom Entier"
ligne = 8 'début des caractères qui m'intéressent
While Cells(ligne, I) <> ""
variable = Gauche(Cells(ligne, I), 8) 'ma variable prend les 8 premiers caractères de la cellule
Workbooks("champ_recherche (1).xlsx").Sheets("Recherche").Range("TextBox1").Value = variable 'J'utilise cette variable pour effectuer ma recherche
reponse = (Workbooks("champ_recherche (1).xlsx").Sheets("Recherche").Range("TextBox1").Value = ListBox) 'Je récupère la réponse
Cells(ligne, JB) = reponse 'J'utilise ce résultat dans mon tableau
Wend
End Sub
Lorsque je compile, j'ai un message d'erreur :
"Erreur de compilation : Sub ou Fonction non définie"
Comprenez vous cette réponse ?
Merci de m'avoir consacré du temps, j'espère avoir été clair dans mon explications.
Cordialement,
Antoine GUIBERT
Bonjour
Pourquoi joindre un fichier :
Sur la charte du Forum
https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html
Point 6 : • Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille limite : 1 mo, n'hésitez pas à compresser vos fichiers).
Cordialement
Bonsoir,
Un fichier pourrait effectivement permettre d'y voir clair dans ton code !
Mais on peut déjà débroussailler un peu :
While Cells(ligne, I) <> ""I est ici une variable non déclarée et non initialisée, qui prendra donc la valeur 0 !
Une colonne 0 ne déclenche pas forcément une erreur, en adressage relatif par rapport à une autre plage (objet Range) qui ne la placerait pas hors de la feuille, mais ce ne peut être le cas ici, Cells est non qualifié (ne réfère pas à la feuille parente, donc en pareil cas réfère à l'objet Application à partir duquel VBA recherche le classeur actif dans l'application, la feuille active dans le classeur actif, pour tenter d'y rattacher la plage [la non qualification est toujours susceptible de réserver des surprises, et est plus lente à l'exécution du fait que l'on fait chercher VBA en permanence au lieu de lui dire sur quoi intervenir...
S'il s'agit de la colonne I, mieux vaudrait mettre 9 !
variable = Gauche(Cells([...]Ta plume a fourché Left sera plus indiqué. (La suite non citée de l'expression réitère le I... question vue ci-dessus.)
Workbooks("champ_recherche (1).xlsx").Sheets("Recherche").Range("TextBox1").Value = variableAlors là on ne peut plus dire que les expressions ne sont plus qualifiées !
reponse = (Workbooks("champ_recherche (1).xlsx").Sheets("Recherche").Range("TextBox1").Value = ListBox)On se trouve dans la même situation. En plus, des parenthèses extérieures inutiles, mais surtout un ListBox à droite du signe = qui sera interprété comme variable non déclarée et non initialisée...
Il faudra s'y repencher...
Cells(ligne, JB) = reponseMêmes remarques que précédemment pour I...
Cordialement.