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

Bug macro worksheet_change en boucle

c.sintive

XLDnaute Nouveau
Bonjour le forum,

Je suis nouveau sur le forum et j'aurai besoin de votre aide précieuse.
Voilà mon problème. Je possède dans mon fichier une base de données que j'ai restreinte à 3 colonnes.
colonne 1 : numéro national (identifiant unique)
colonne 2 : numéro de travail
colonne 3: nom de l'individu (des vaches en l’occurrence ...)

Je souhaiterai, pour chaque ligne, qu'à la saisie d'un de ces 3 éléments les deux autres s'affichent automatiquement si la vache a déjà été renseignée une première fois et que les données sont donc disponibles dans la base de données.

J'ai donc réalisé une macro avec worksheet_change. Seulement elle s'applique sur les 3 colonnes et donc à chaque fois qu'elle inscrit une valeur dans une des cellules, elle se recharge et donc tourne en boucle... du moins c'est l'impression que j'ai.
Le soucis c'est que je ne veux pas bloquer la saisie sur une seule colonne mais bien laisser le choix à l'utilisateur en fonction de l'élément qu'il souhaite saisir (à priori numéro de travail ou nom).

Les "1" en colonne A servent à savoir si la vache a déjà été renseigné, la macro n'est censée se déclencher que sur cette condition. A terme, il faudra que j'insère une fonction sur cette colonne.

J'apprends sur le tas en VBA et mon code n'est surement pas très "beau".... Pour info, au départ dans mon code, je faisais les recherches index/equiv directement en VBA mais j'ai changé parce que ça ramait. Je suis donc passé en "FormulaLocal=".

Merci d'avance pour votre aide.
 

Pièces jointes

  • fichier.xlsm
    23.7 KB · Affichages: 33
  • fichier.xlsm
    23.7 KB · Affichages: 34
  • fichier.xlsm
    23.7 KB · Affichages: 40

c.sintive

XLDnaute Nouveau
Re : Bug macro worksheet_change en boucle

Bonjour,

Merci pour ton aide, je ne connaissais pas du tout cette application sur vba...
Je pense que ça doit être exactement ce qu'il me fallait. Je vais tester ça!

Merci beaucoup!
 

Papou-net

XLDnaute Barbatruc
Re : Bug macro worksheet_change en boucle

Bonjour c.sintive,

Pour éviter la récursivité de la macro événementielle, il faut insérer en début de code la commande suivante :

Code:
Application.EnableEvents = False
Et ne pas oublier de la rétablir à la fin :

Code:
Application.EnableEvents = True
En règle générale, ce couple de lignes est à prévoir systématiquement dans l'événement Change.

Tu peux aussi utiliser le paramètre Target pour limiter l'action à une colonne, par exemple :

Code:
If Target.Column >1 Then Exit Sub
N'agira que si la cellule est située dans la colonne A.

Tu peux bien sûr spécifier une plage de cellules, dans ce cas :

Code:
If Intersect(Range("A10:E100"),Target) Is Nothing Then Exit Sub
Espérant avoir répondu.

Cordialement.

Aïe, encore "grillé" par Pierrot !
 

Discussions similaires

Réponses
15
Affichages
425
Réponses
8
Affichages
205
Réponses
12
Affichages
279
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…