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

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 :)
1621106500630.png


1621106316497.png
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.:)
 

Hanjen

XLDnaute Nouveau
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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

ram_ia

XLDnaute Junior
Bonjour,
Confronté à un problème "identique", je me permets de joindre le fichier car je ne n'arrive pas, vu mes compétences en vba, à trouver l'erreur.
Merci par avance pour votre attention.
Cordialement,
Ram_IA
capture écran.png
 

Pièces jointes

  • V3-compta_fin video 4.xlsm
    51.8 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
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 ?
 

ram_ia

XLDnaute Junior
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
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
 

ram_ia

XLDnaute Junior
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
 

Discussions similaires

Statistiques des forums

Discussions
312 913
Messages
2 093 534
Membres
105 750
dernier inscrit
fred13340