[Erreur de compilation] Sub ou fonction non définie

Bonjour à tous,

Je débute tout juste sur le VBA car avec le travail j'ai besoin de restructurer un fichier excel. J'ai donc écrit le code ci-dessous. Sauf je n'arrive pas à l'éxécuter. J'ai le message d'erreur : [Erreur de compilation] Sub ou fonction non défiinie. Et la ligne du Sub est surlignée en jaune. Je n'arrive pas du tout à comprendre pourquoi cela ne fonctionne. Il y a l'air d'avoir un problème sur la définition du Sub mais je ne vois pas quoi. Est-ce que c'est un problème d'emplacement ? Dois-je écrire le code plutôt dans Feuil1 ?

Merci par avance pour votre aide. :D

image

Salut,

En général on préfère écrire les Subs (en Public) dans ce qu'on appelle des Modules, que l'on doit insérer dans le projet (clic-droit dans l'arborescence du projet, Insertion, Module).

Si tu écris du code dans le Workbook, c'est plutôt pour des évènements liés au Workbook (par exemple à l'ouverture, on aura Workbook_Open()..).

C'est personnellement comme ça que je procède, mais je ne détiens pas le savoir absolu.

Bibu

Ah oui d'accord, merci pour votre réponse.

J'ai du coup reporter le code dans un module. Mais le problème persiste encore :/

image

Bonjour,

le problème vient de ton instruction cell (qui n'est pas connue de vba), l'instruction correcte est cells. De plus tu peux simplifier grandement l'écriture de cette manière :

cells(i,"A").value="Numéro fiche forum"

A l'avenir, merci de mettre ton classeur ou à tout le moins ton code (entre balises via bouton </>) plutôt qu'une capture d'écran dont on ne peut rien faire.

Passez le sub en public, en écrivant :

Public Sub transposer()
'
'
'
End Sub

De plus, à la fin de votre boucle sur i, n'oubliez pas de la "terminer", en écrivant

For i = 0 to rng.Rows.Count Step 3
'
'
'
Next i

Et Cell(...) qui n'est pas correct, écrire Cells(...) à la place

Bibu

Merci beaucoup à tous les deux. Cela fonctionne maintenant !

bonjour,

En outre tu peux supprimer la déclaration :

Dim row as Range

D'ailleurs tu ne l'utilise pas. De toute façon cette déclaration est superflue et même douteuse (car Row est une propriété intrinsèque de Range et de VBA) il n'y a donc pas lieu d'en redéclarer une autre en tant que variable...

A+

Rechercher des sujets similaires à "erreur compilation sub fonction definie"