XL 2016 Erreur d'exécution 1004

garnote

XLDnaute Junior
Bonjour à tous et toutes,

J'ai une macro contenant cette ligne :
ActiveSheet.Name = un & " - " & deux & " - " & trois

Hier et ce matin j'ai fait rouler à de multiples reprises ladite macro sans aucun problème, mais tout à coup elle bogue
sur la ligne en question avec comme message : Erreur d'exécution 1004 Désolé... ce nom est déjà attribué

J'ai trouvé les mots un, deux et trois dans une macro d'un autre document et j'ai supprimé ce document.
Rien n'y change, ça bogue encore. Question : Pourquoi, mon dieu, pourquoi? :)

Bonne journée
Serge
 

garnote

XLDnaute Junior
Bonjour Garnote,
Il vous dit qu'une feuille dans le fichier porte déjà ce nom.
Ecrit comme ça un, deux et trois ne sont pas des mots mais des variables.
Que valent ces variables quand cela boggue ?
Ou mieux, auriez vous un petit fichier test ?
Bonjour sylvanu,

un = [E4], deux = [E5] et trois = [F5], les cellules E4, E5 et F5 contenant du texte.
...
Sheets.add
ActiveSheet.Name = un & " - " & deux & " - " & trois
...
À chaque lancement de la macro, elle ajoutait une feuille nommée par la fameuse ligne.
Et là, tout à coup, bogue. Et encore plus bizarre, si je supprime la première feuille nommée
avant de relancer la macro, tout fonctionne correctement!
Ce qui m'intrigue le plus, c'est que ça a fonctionné des centaines de fois et là, plus!
Si mon explication n'est pas claire, je t'enverrai le fichier plutôt que les macros,
vu qu'il y en a 10 et que le module contient des centaines de lignes.

Et pour rire un peu, un, deux et trois sont des mots. :) . Mots qui dans ce contexte
s'appellent des variables.

Bonne journée!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Evidemment je n'ai pas trouvé une cause possible.
En désespoir de cause, je fais une verif du nom de fichier pour être bien sur que c'est cela la cause, avec :
VB:
Function FeuilleExiste(FeuilleAVerifier)
Dim Feuille As Worksheet
    FeuilleExiste = False
    For Each Feuille In Worksheets
        If UCase(Feuille.Name) = UCase(FeuilleAVerifier) Then
            FeuilleExiste = True
            Exit Function
        End If
    Next Feuille
Exit Function
SiErreur:
MsgBox "Une erreur s'est produite..."
FeuilleExiste = CVErr(xlErrNA)
End Function
et j'ai rajouté dans la macro :
Code:
    NomFeuille = un & " - " & deux & " - " & trois
    If FeuilleExiste(NomFeuille) = True Then
        MsgBox "Une feuille nommée" & Chr(10) & Chr(10) & NomFeuille & Chr(10) & Chr(10) & "existe déjà."
        Exit Sub
    End If
Si le bug continue sans avertissement par cette alerte, c'est que la cause à une autre origine.
A suivre ....
NB: Joli fichier. Les fractales ... tout un monde. :)
 

Pièces jointes

  • Collection de fractales.xlsm
    173.8 KB · Affichages: 4

garnote

XLDnaute Junior
Evidemment je n'ai pas trouvé une cause possible.
En désespoir de cause, je fais une verif du nom de fichier pour être bien sur que c'est cela la cause, avec :
VB:
Function FeuilleExiste(FeuilleAVerifier)
Dim Feuille As Worksheet
    FeuilleExiste = False
    For Each Feuille In Worksheets
        If UCase(Feuille.Name) = UCase(FeuilleAVerifier) Then
            FeuilleExiste = True
            Exit Function
        End If
    Next Feuille
Exit Function
SiErreur:
MsgBox "Une erreur s'est produite..."
FeuilleExiste = CVErr(xlErrNA)
End Function
et j'ai rajouté dans la macro :
Code:
    NomFeuille = un & " - " & deux & " - " & trois
    If FeuilleExiste(NomFeuille) = True Then
        MsgBox "Une feuille nommée" & Chr(10) & Chr(10) & NomFeuille & Chr(10) & Chr(10) & "existe déjà."
        Exit Sub
    End If
Si le bug continue sans avertissement par cette alerte, c'est que la cause à une autre origine.
A suivre ....
NB: Joli fichier. Les fractales ... tout un monde. :)
Merci beaucoup et là, je suis sidéré. Avant d'utiliser ta macro, je suis retourné dans mon fichier et j'ai pu faire apparaître autant de fractales que je voulais dans de nombreuses feuilles. Mystère et boule de rhum! :)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Vous lancer la macro 'Fractale' à partir de la feuille Fractale et récupérez les valeurs de E3,E5 et F5 dans les variables 'un', 'deux','trois' pour construire un nom de nouvelle feuille.
Si vous ne changez pas les valeurs (au moins 1) de E3, E5, F5 entre deux appels, c'est normal que la macro plante au deuxième appel car la feuille de nom E3 - E5 - F5 a été crée au premier.
A vous de vérifier que la combinaison de E3, E5 et F5 n'a pas déjà été utilisée dans un nom de feuille
ou que la feuille n'existe pas déjà.

Quand une macro attend des entrées utilisateur, il faut toujours se méfier du résultat et faire les tests idoines avant de lancer des actions.

Cordialement
 
Dernière édition:

garnote

XLDnaute Junior
Bonjour,

Vous lancer la macro 'Fractale' à partir de la feuille Fractale et récupérez les valeurs de E3,E5 et F5 dans les variables 'un', 'deux','trois' pour construire un nom de nouvelle feuille.
Si vous ne changez pas les valeurs (au moins 1) de E3, E5, F5 entre deux appels, c'est normal que la macro plante au deuxième appel car la feuille de nom E3 - E5 - F5 a été crée au premier.
A vous de vérifier que la combinaison de E3, E5 et F5 n'a pas déjà été utilisée dans un nom de feuille
ou que la feuille n'existe pas déjà.

Quand une macro attend des entrées utilisateur, il faut toujours se méfier du résultat et faire les tests idoines avant de lancer des actions.

Cordialement
Ça je peux comprendre, mais je suis presque certain d'avoir changé au moins une des trois valeurs avant de lancer la macro. En tout cas, si ça se reproduit, j'ouvrirai l'œil et le bon! :)
 

garnote

XLDnaute Junior
@Hasco @sylvanu
Bonsoir,
Aujourd'hui, tout va bien, pas de bogue. Faut croire que j'avais commis une erreur d'inattention en donnant les mêmes valeurs à un, deux et trois une seconde fois. Bon, j'ai remplacé un = [E4] par
un = Range("E4").Value ... ,mais ça m'étonnerait que ça change grand-chose. Alors je vote pour mon inattention. Si ça rebogue, je prendrai une autre bière et ferai des prières! 🤣 ou utiliserai la surveillante :) de sylvanu !
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth