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 ! "I" (entre guillemets) fonctionne généralement (bien qu'il arrive que non ! ), mais la syntaxe de la propriété prévoit un numéro de colonne, et autant respecter la syntaxe, c'est toujours plus sûr.

variable = Gauche(Cells([...]

Ta plume a fourché , tu n'étais pas en train de taper une formule dans Excel FR, mais dans VBA, en utilisant une fonction VBA : 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 = variable

Alors là on ne peut plus dire que les expressions ne sont plus qualifiées ! Mais le nom de plage interroge. Ton code ferait apparaître que tu as nommé une plage TextBox1, ce qui paraît un peu curieux pour un nom de plage. En outre, ayant nommé une plage, le nom (en principe unique dans le classeur) suffit à qualifier la plage, sans référence au classeur et à la feuille. Un examen de la chose et des précisions ne seraient donc pas inutiles...

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) = reponse

Mêmes remarques que précédemment pour I...

Cordialement.

Rechercher des sujets similaires à "utiliser macro"