VBA exécution automatique, changement d'une cellule qui entraine le changement d'autr

  • Initiateur de la discussion Initiateur de la discussion AQSE
  • Date de début Date de début

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 !

AQSE

XLDnaute Nouveau
Bonjour !

Voici mon problème : je voudrais que dans ma feuille excel, quand je modifie le contenu d'une cellule, le contenu d'une autre cellule se modifie également de façon automatique, sans que l'on ait à activer la macro manuellement.

J'ai essayé toute sorte de codes trouvés sur les forums mais aucun ne fonctionne alors je me suis dit que peut-être y avait-il un emplacement précis pour que les macros s'éxécutent automatiquement (j'ai essayé "This Workbook" et un module de classe). Ou peut être qu'il faut cocher une option dans Outils, références ...??

Je vous met quand même l'un de mes bouts de code ridicule (au cas ou il pourrait aider à trouver mon erreur ...!)

Private Sub Worksheet_SelectionChange(ByVal target As Excel.Range)
Windows("doc exc remplacement erraf02.xls").Activate
Sheets("Tableau référence").Select
If target.Address = "B18" Then
Range("A20").Value = Application.WorksheetFunction.VLookup("Colza", Range("A5:BG18"), 3, False)
End If
End Sub

Merci d'avance !!

AQSE
 
Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

Bonjour Aqse, bonjour le forum,

Je suis pas sûr de répondre à ton problème... Je te propose le code suivant à placer dans le composant Worksheet adapté à tes besoin:

Code:
Private test As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If test = True Then Exit Sub 'si la variable test est vrai, sort de la procédure
Windows("doc exc remplacement erraf02.xls").Activate
Sheets("Tableau référence").Select 'normalement pas nécessaire si ce code est placé dans cet onglet justement
If Target.Address = "$B$18" Then
    test = True 'définit la variable test
    Range("A20").Value = Application.WorksheetFunction.VLookup("Colza", Range("A5:BG18"), 3, False)
    test = False 'redéfinit la variable test
End If
End Sub

Ce qui m'étonne c'est que la cible (Target) fasse partie du tableau de référence A5:BG18 ??
 
Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

bonjour AQSE, salut Robert, content de te croiser ...

1. j'imagine que la cellule B18 contenait colza quand il a utilisé l'enregistreur de macros, sinon la formule renvoie toujours la même valeur (!! ??)
2. et pourquoi ne pas laisser la formule dans la cellule A20, puisqu'elle doit changer à chaque chgt de la cellule source au lieu d'utiliser du VBA
 
Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

J'ai fait un fichier excel en super simplifié : ça devrait être la plus explicite des explications 🙂rolleyes🙂 de mon problème : le code est dans VBA "this workbook".
Ce que je voudrais dc c'est que quand on change le contenu de la cellule A7, VBA fasse automatiquement sa recherchev pour trouver la valeur adaptée à mettre en B7.
Si je n'utilise pas simplement la formule excel c'est que dans mon fichier réel, ce n'est pas possible et que je suis obligée d'utiliser VBA en automatique.
Voila, j'espère que ce mini fichier vous aidera à m'aider !

Merci !

AQSE
 

Pièces jointes

Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

Bonjour à tous,

modifier légèrement le code comme ça :

Code:
Sub Worksheet_Change(ByVal Target As Range)
    
    
    If Target.Address = "$A$7" Then
   
    Range("B7").Value = Application.WorksheetFunction.VLookup([COLOR=red]Target.Value[/COLOR], Range("A1:B5"), 2, False)
    
    End If
    
    
End Sub

Mais surtout, il faut le déplacer dans l'objet Feuil1
 
Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

Bonnour le fil, bonjour le forum,

Oui, tout simplement l'endroit où tu places le code. Les macros événementielles, comme leur nom l'indique, se déclenchent selon l'événement. Tu voulais qu'elle se déclenche un changement dans un onglet donc il faut la placer dans un onglet (je te l'avais d'ailleurs dit dans mon précédent post...). J'ai juste rajouté une variable booléenne Test qui évite de refaire le code quand il modifie B7 (car cela relance le code).
 

Pièces jointes

Dernière édition:
Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

... re,

j'ai toujours pas compris pourquoi il faut passer par du VBA, une formule est toujours 100 fois plus rapide

... fermeture de la parenthèse non ouverte ;-)
 
Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

Bonjour le fil, bonjour le forum,

Oui Bertrand tu as mille fois raison ! Et le pire c'est que, le nez dans le guidon, je ne m'en suis même pas rendu compte... Ça n'a aucun sens d'aller chercher une macro événementielle pour ça...
 
Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

Pour que vous ne pensiez pas que vous avez perdu votre temps, je vous reprécise que ce que je veux avec cette formule c'est l'utiliser pour un fichier dans lequel je ne pouvais pas arriver à mon résultat avec les formules basiques excel (recherchev et Cie), mais uniquement avec un code en VBA dc voila, ce n'était pas pr vous embeter, ...vraiment !!
dc merci à tous pr votre aide, ma boite vous en sera redevable !
lol!
 
Re : VBA exécution automatique, changement d'une cellule qui entraine le changement d

Bonjour tous


A mettre dans le code de la Feuille

Pas dans ThisWorbook
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$7" Then
Range("B7").Value = Application.WorksheetFunction.VLookup(Range("A7"), Range("A1:B5"), 2, False)
End If
End Sub

A+
 

Pièces jointes

- 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
Retour