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 !

armelle1303

XLDnaute Junior
bonjour à tous
voici un problème de gestion des erreurs où je tourne en rond

Problème :
Erreur = si je ne sélectionne rien dans la liste parce que oubli ou info pas dans la liste
Liste 1 = liste composée de 4 colonnes
Liste 2 = liste composée de 2 colonnes

Si j'ai le code des 2 erreurs activées en même temps, la 1ére marche mais arrivé à la 2ème il me met erreur 381 (mais valide la ligne PB et se déplace de 4 cases au lieu d'aller à la ligne suivante en colonne G)
Si je n'ai pas d'erreur à la 1ére (j'ai sélectionné une valeur), la 2ème fonctionne et va bien en erreur (mais valide la ligne erreur et se déplace de 2 cases au lieu d'aller à la ligne suivante colonne L)

Si je désactive la 1ére, il me met erreur 381 à la 1ére.

voici mon code qui déconne :
……
On Error GoTo PB
ActiveCell = listbClient.Column(1, listbClient.ListIndex) 'colonne C
ActiveCell.Offset(0, 1).Select

ActiveCell = listbClient.Column(0, listbClient.ListIndex) 'colonne D
ActiveCell.Offset(0, 1).Select

ActiveCell = listbClient.Column(3, listbClient.ListIndex) 'colonne E
ActiveCell.Offset(0, 1).Select

ActiveCell = listbClient.Column(2, listbClient.ListIndex) 'colonne F
ActiveCell.Offset(0, 1).Select

PB: ActiveCell.Offset(0, 4).Select

ActiveCell = cmbRetInf.Value 'colonne G
ActiveCell.Offset(0, 1).Select

ActiveCell = txtTransporteur.Value 'colonne H
ActiveCell.Offset(0, 1).Select

ActiveCell = txtColis.Value 'colonne I
ActiveCell.Offset(0, 1).Select

On Error GoTo erreur
ActiveCell = listbDesi.Column(0, listbDesi.ListIndex) 'colonne J
ActiveCell.Offset(0, 1).Select

ActiveCell = listbDesi.Column(1, listbDesi.ListIndex) 'colonne K
ActiveCell.Offset(0, 1).Select

erreur: ActiveCell.Offset(0, 2).Select

ActiveCell = txtInfSup.Value 'colonne L
ActiveCell.Offset(0, 1).Select


Si quelqu'un peut m'aider et a une explication sur les erreurs, Merci
 
Re : gestion des erreurs

Bonjour Armelle1303 🙂,
A vu de nez, il me semble qu'il y a un problème de base : en cas d'erreur, tu envoies sur une ligne de code plus bas, mais s'il n'y a pas d'erreur, tu balaie toutes les lignes, celles prévues pour les erreurs avec les autres...
Ne manquerait-il pas un Exit Sub avant les Label d'erreur, ou un GoTo pour envoyer sur un Label après la gestion d'erreur ?
Bonne journée 😎
 
Re : gestion des erreurs

Bonjour JPN
Exactement c'est justement mon problème (mais c'est peut être aussi parce que je débute en code).
et en cas d'erreur je ne veux pas sortir de la sub mais aller à ligne suivante et en cas d'erreur je veux qu'il se déplace de 4 cases pour le 1er pas.
Il faut utiliser Go to? Quelle est la syntaxe?

et sais tu pourquoi les deux erreurs ne fonctionnent pas lorsqu'elles sont activées toutes les deux et que j'ai un message Erreur 381?
 
Re : gestion des erreurs

Re 🙂,
Difficile de suivre un code quand on ne sait pas à quoi il s'applique... En gros, ce que je proposais, c'est ça :
Code:
On Error GoTo PB
ActiveCell = listbClient.Column(1, listbClient.ListIndex) 'colonne C
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbClient.Column(0, listbClient.ListIndex) 'colonne D
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbClient.Column(3, listbClient.ListIndex) 'colonne E
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbClient.Column(2, listbClient.ListIndex) 'colonne F
ActiveCell.Offset(0, 1).Select
[B][COLOR=red]GoTo Suite[/COLOR][/B]
PB: ActiveCell.Offset(0, 4).Select
 
ActiveCell = cmbRetInf.Value 'colonne G
ActiveCell.Offset(0, 1).Select
 
ActiveCell = txtTransporteur.Value 'colonne H
ActiveCell.Offset(0, 1).Select
 
ActiveCell = txtColis.Value 'colonne I
ActiveCell.Offset(0, 1).Select
[B][COLOR=red]GoTo Suite[/COLOR][/B]
On Error GoTo erreur
ActiveCell = listbDesi.Column(0, listbDesi.ListIndex) 'colonne J
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbDesi.Column(1, listbDesi.ListIndex) 'colonne K
ActiveCell.Offset(0, 1).Select
[B][COLOR=red]GoTo Suite[/COLOR][/B]
erreur: ActiveCell.Offset(0, 2).Select
[COLOR=red][B]Suite:[/B][/COLOR]
ActiveCell = txtInfSup.Value 'colonne L
ActiveCell.Offset(0, 1).Select
Sinon, si ton seul problème est de ne pas tenir compte des erreurs, le plus simple (mais dangereux, car tu ne sauras jamais si il y a eu erreur ou non)
Code:
[B][COLOR=red]On Error Resume Next[/COLOR][/B]
ActiveCell = listbClient.Column(1, listbClient.ListIndex) 'colonne C
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbClient.Column(0, listbClient.ListIndex) 'colonne D
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbClient.Column(3, listbClient.ListIndex) 'colonne E
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbClient.Column(2, listbClient.ListIndex) 'colonne F
ActiveCell.Offset(0, 1).Select
 
ActiveCell.Offset(0, 4).Select
 
ActiveCell = cmbRetInf.Value 'colonne G
ActiveCell.Offset(0, 1).Select
 
ActiveCell = txtTransporteur.Value 'colonne H
ActiveCell.Offset(0, 1).Select
 
ActiveCell = txtColis.Value 'colonne I
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbDesi.Column(0, listbDesi.ListIndex) 'colonne J
ActiveCell.Offset(0, 1).Select
 
ActiveCell = listbDesi.Column(1, listbDesi.ListIndex) 'colonne K
ActiveCell.Offset(0, 1).Select
 
ActiveCell.Offset(0, 2).Select
 
ActiveCell = txtInfSup.Value 'colonne L
ActiveCell.Offset(0, 1).Select
[COLOR=red][B]On Error GoTo 0[/B][/COLOR]
A + 😎
 
Re : gestion des erreurs

merci j'essaie ce soir et te tiens au courant
j'aurais bien mis mon fichier en PJ mais il est trop lourd.
Si cela ne marche pas c'est que je ferai car effectivement c'est pas toujours facile de voir ce que l'on cherche quand on ne peut pas tester.
 
Re : gestion des erreurs

bonjour
apparemment ma réponse de ce matin n'est pas passée ; faire plusieurs choses en même temps ...
bon je disais que j'avais trouvé la solution en mettant on error resume next avant chaque ligne et cela faisait tout à fait ce que je recherchai (ne pas afficher le message d'erreur et passer à la ligne suivante) comme ça j'ai supprimé mes déplacements de 4 et 2 cellules en cas d'erreur.
je n'avais pas bien compris ce code faute d'utilisation et le fait d'avoir creusé a été bénéfique.
Je n'ai pas testé ta solution mais merci pour ta réponse car cela m'a aidée à trouver la solution.

a+
 
- 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

Réponses
21
Affichages
2 K
  • Question Question
Microsoft 365 Code VBA
Réponses
2
Affichages
519
Réponses
2
Affichages
739
  • Question Question
XL pour MAC boucle couleur
Réponses
25
Affichages
1 K
Retour