Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Erreur "Déclaration existante dans la portée en cours"

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hanjen

XLDnaute Nouveau
Bonjour à tous,
Je fais face à ce problème, j'ai dupliqué des lignes de macro selon une donnée initiale entré par l'utilisateur.
Je me retrouve avec cette erreur.
VBA me souligne l'erreur sur une ligne .
Je ne sais pas si je peux appeler ça une "instruction" mais ces lignes permettent de lire une donnée dans une inputbox et si la donnée n'est pas de la forme attendu on demande "goto reprise".
Le fait de l'avoir dupliqué VBA n'aime pas ça. Savez-vous pourquoi?

Je m'excuse, je ne peux vous envoyer le fichier car le projet est bien avancé et confidentiel.
Merci pour votre aide 🙂


 
Bonsoir Hanjen,
En dupliquant les lignes, vous avez aussi dupliqué "reprise:" ?
Car dans ce cas vous avez deux labels "reprise" et ça c'est une erreur.
Baptisez le second reprise2 et modifiez le Goto reprise2.
Un label ne peut être qu'unique, sinon comment le VBA sait sur quel reprise il doit aller ?
Enfin, un Goto c'est moyen, il faut au maximum l'éviter.
 
Au débug c'est toujours complexe de savoir d'où on vient, surtout si le code entre label et le ou les goto est long.
D'autant qu'on peut souvent le remplacer par une autre structure comme un while wend ou autre.
C'est une règle générale de base. Mais comme on n'a qu'une partie parcellaire du code, impossible de vous proposer autre chose.🙂
 
Bonjour,
"Just for the fun ", donnez nous juste ces 5 lignes de code complètes. Hors contexte elles n'ont rien de confidentielles. Je serais curieux de voir si on peut supprimer le Goto.
 
Bonjour @sylvanu,
Voici les quelques lignes de code qui ont du sens 🙂



VB:
reprise:
                Ident = Trim(Application.InputBox("Entrez la reference de l'identifant :", "Reference Identifiant", Type:=1))
                If PlgRecherche.Find(Ident) Is Nothing Or Ident = False Or IsError(Ident) Then
                    MsgBox "Valeur incorrecte ou non trouvée dans la plage de Recherche", vbExclamation
                    GoTo reprise
                Else

                    Ligne = PlgRecherche.Find(Ident).Row
 
Re,
Une possibilité avec une fonction perso.
Dans le code :
VB:
        Do: Reponse = Question(PlgRecherche)
            If rep = 0 Then MsgBox "Valeur incorrecte ou non trouvée dans la plage de Recherche", vbExclamation Else Exit Do
        Loop
        Ligne = Reponse
En fonction perso :
Code:
Function Question(Plage) ' Renvoie 0 si Erreur sinon renvoie N° de ligne trouvé
    Ident = Trim(Application.InputBox("Entrez la reference de l'identifant :", "Reference Identifiant", Type:=1))
    If Plage.Find(Ident) Is Nothing Or Ident = False Or IsError(Ident) Then Question = 0 Else Question = Plage.Find(Ident).Row
End Function
On a le même nombre de lignes de codes
La fonction peut être appelée par plusieurs modules.
Il n'y a pas de Goto.
It was just for the fun.
 
Bonjour,
Il manque quelques commentaires pour suivre ce que vous voulez faire.
Mais deux points m'étonnent :
1- Sub addinfo(page, lignes) : "page" est une variable d'entrée donc ne doit pas être redimensionnée ensuite, supprimez le "Dim page As String".
2- Concernant "Pages", il n'y a pas de Dim le concernant, donc avec Option Explicit qui oblige à déclarer les variables, il y a erreur. D'autre part que vaut "Pages" puisque non initialisé ? Et pourquoi écraser votre variable d'entrée "page" avec "Pages" : page = Pages ?
 
Bonjour et tout d'abord merci pour vos retours Sylvanu & Valtrase.
Mon soucis, encore une fois, est que je n'ai fait que recopier pas à pas les directives d'un tuto (Tuto de rien sur comment créer un logiciel comptable et dont la 4ème vidéo
Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les cookies.
développe la partie la plus importante, copier les données dans le bon journal ...)
Oserai-je vous demander à nouveau votre aide pour me proposer une correction ?!
Bien à vous
Ram_IA
 
Re,
Avez vous au moins essayé nos demandes de modifs ?
Qu'est ce que ça donne ?
Pouvez vous ajouter quelques commentaires pour comprendre ? Par exemple que signifie page=Pages ? Que vaut Pages ? Pourquoi écraser une variable d'entrée ?
 
Re,
Avez vous au moins essayé nos demandes de modifs ?
Qu'est ce que ça donne ?
Pouvez vous ajouter quelques commentaires pour comprendre ? Par exemple que signifie page=Pages ? Que vaut Pages ? Pourquoi écraser une variable d'entrée ?
Merci pour votre retour Sylvanu, c'est très gentil mais je suis désespéré car techniquement incapable de comprendre donc de corriger. Je ne maitrise pas du tout le langage de programmation, je n'ai fait que recopier les directives du tutoriel qui pourtant semble fonctionner. J'ai essayé mais cela n'a rien donné !
Le principe de cet outil est d'entrer des données dans Formulaire puis en cliquant sur registrer, qu'elles se placent dans le journal correspondant (A;D;F ou D) et dans le GrandJournal. Qu'elles y restent, même si je supprime ensuite les entrées du formulaire ... C'est exactement ce dont j'ai besoin sauf que ...!

C'est un peu léger comme commentaires , je l'avoue ☺️

Ram_IA
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

I
Réponses
1
Affichages
9 K
informatixo
I
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…