Variable non définie ???

leina_33

XLDnaute Nouveau
Bonjour à tous,

alors j'ai une macro dont je me sers tout le temps que je mets dans un nouveau fichier tous les 6 mois.
Depuis 1 an pas de probleme et là aujourd'hui je veux creer un nouveau fichier et quand je lance ma macro il me dit : "erreur de compilation, variable non definie"
mais je n'ai jamais défini cette variable jusqu'à maintenant !!!!

Voici le code :
Code:
'Désactiver message confirmation boite de dialogue
    Application.DisplayAlerts = False

' Enlever filtre éventuel
     Sheets("Besoin").Select
     If Worksheets("Besoin").AutoFilterMode Then
     Worksheets("Besoin").AutoFilterMode = False
     End If

'supprimer la feuille "recprodef" si elle existe
    
    For Each X In Sheets
    If X.Name = "recprodef" Then X.Delete
    Next

....

Je suis désarmée, j'ai essayé de la definir avec Dim X as Sheets, j'ai essayé en mettant worksheets à la place de sheets, plein d'autres trucs que j'ai trouvé idiot mais comme on ne sait jamais ...
Bref depuis ce matin je m'arrache les cheveux !!!

Merci infiniment de votre aide
 

Jam

XLDnaute Accro
Re : Variable non définie ???

Salut leina, Pierrot,

Je pense que ton problème est tout simple.
Vérifie si tu as en-tête de module le code suivant:
Code:
Option Explicit

Si tu as changé de version d'Excel par exemple, cette ligne a peut-être été activée sans que tu y fasses attention.
Cette ligne a pour effet de demander la déclaration obligatoire de toute les variables utilisées dans le module.
Cette option s'active dans les options de l'IDE de VBA.
Il est fortement conseillé de l'utiliser si l'on veut faire du "bon" code et éviter des problèmes de déclaration et portées de variables.

Bon courage
 

Jam

XLDnaute Accro
Re : Variable non définie ???

leina,

Petite précision: il ne faut pas déclarer Dim x As Sheets mais As Sheet (sans le s). La déclaration de x est faites pour l'objet feuille de la collection de feuille (oui, c'est subtil mais pas compliqué à comprendre). En effet, dans ton code tu va parcourir la collection de feuille en regardant une feuille après l'autre.
C'est valable pour toute collection qua tu seras amenée à utiliser dans le futur.

Bon courage

Ah, je rajoute la subtilité suivante. Comme tu as remarqué le code de Pierrot fonctionne. Pourtant il parle de Worksheet quand tu parcours une collection Sheets. C'est tout simplement parce que la collection Sheets regroupe la collection Worksheets. Attention, l'inverse n'est pas vrai ;)
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Variable non définie ???

Re, bonjour Jam
il ne faut pas déclarer Dim x As Sheets mais As Sheet (sans le s).
A noter que ce type de donnée n'est pas défini dans excel 2003, c'est pourquoi j'avais préciser "worksheet"... on peut également le typer en "Object" si l'on veut boucler sur tous les type de feuille (feuille de calcul, graphique, etc...)

bonne soirée
@+
 

Discussions similaires

Réponses
2
Affichages
172

Statistiques des forums

Discussions
312 428
Messages
2 088 338
Membres
103 815
dernier inscrit
SANOU ANSELME