VBA qui se fait automatiquement
M.R
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai une petite question concernant une VBA. Je voudrais faire une VBA qui se fait automatiquement quand je change la valeur de ma cellule.
Je vous explique; j'ai créé une VBA:
Sub lance_USF2()
UserForm2.Show
End Sub
Sub livraison()
If Cells(2, 17).Value = "reçu" Then lance_USF2
End Sub
Celle ci me permet d'ouvrir un userform quand la valeur de la cellule est "reçu"
mais mon problème c'est qu'elle ne se fait pas automatiquement.... Quand je change la valeur de ma cellule, je suis obligé d'appuyer sur "exécuter ma maccro" pour que ça marche...
Quelqu'un aurait une idée?
J'ai une petite question concernant une VBA. Je voudrais faire une VBA qui se fait automatiquement quand je change la valeur de ma cellule.
Je vous explique; j'ai créé une VBA:
Sub lance_USF2()
UserForm2.Show
End Sub
Sub livraison()
If Cells(2, 17).Value = "reçu" Then lance_USF2
End Sub
Celle ci me permet d'ouvrir un userform quand la valeur de la cellule est "reçu"
mais mon problème c'est qu'elle ne se fait pas automatiquement.... Quand je change la valeur de ma cellule, je suis obligé d'appuyer sur "exécuter ma maccro" pour que ça marche...
Quelqu'un aurait une idée?
A voir également:
- VBA qui se fait automatiquement
- Automatiquement - Guide
- Logiciel pour trier les photos automatiquement - Guide
- Excel compter cellule couleur sans vba - Guide
- Renommer automatiquement des fichiers - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
11 réponses
Bonjour
VBA est le nom du langage avec lequel tu as écrit ta macro.
C'est donc la macro qu'il faut lancer....
https://forums.commentcamarche.net/forum/affich-20778122-macro-lance-au-changement-d-une-cellule-excel
VBA est le nom du langage avec lequel tu as écrit ta macro.
C'est donc la macro qu'il faut lancer....
https://forums.commentcamarche.net/forum/affich-20778122-macro-lance-au-changement-d-une-cellule-excel
Merci ! mais j'ai bien vu cette conversation mais je n'arrive pas à comprendre comment fonctionne le "Private Sub Worksheet_Change(ByVal Target As Range)" et je n'arrive pas à faire le lien entre "Private Sub Worksheet_Change(ByVal Target As Range)" et ma maccro "livraison"
Bonjour
Tu remplaces tes 2 macros par
code à installer dans le module feuille de la cellule Q2
astuce pour installer:
clic droit sur le nom d'onglet
visualiser le code
Tu remplaces tes 2 macros par
Private Sub Worksheet_Change(ByVal Target As Range)
If target.address=$Q$2 then
If target="reçu" then UserForm2.Show
End if
end sub
code à installer dans le module feuille de la cellule Q2
astuce pour installer:
clic droit sur le nom d'onglet
visualiser le code
Merci pour votre réponse!!
excel me dit qu'il y a une erreur de syntaxe sur la deuxième ligne...
excel me dit qu'il y a une erreur de syntaxe sur la deuxième ligne...
Bonsoir,
michel a tapé à la main sur le post, ça se voit car target a une majuscule dans la signature et plus ensuite, donc il n'a pas pu tester la validité du code, mais tout de même il t'apporte 99% de la solution
Un peu de recherche et de réflexion de ta part aurait suffit à finaliser:
Je suis mauvais en VBA, il m'a fallut 2minutes pour trouver
michel a tapé à la main sur le post, ça se voit car target a une majuscule dans la signature et plus ensuite, donc il n'a pas pu tester la validité du code, mais tout de même il t'apporte 99% de la solution
Un peu de recherche et de réflexion de ta part aurait suffit à finaliser:
- Si on regarde la propriété Address d'un Range dans l'aide en ligne (faut sélectionner le texte et cliquer F1) on voit que c'est un string.
- D'autre par, plus haut, dans ton propre code, tu testes la propriété Value du range.
Je suis mauvais en VBA, il m'a fallut 2minutes pour trouver
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour
merci Whismeril :o)
Toutefois, le "value" n'est pas nécessaire: cette propriété est la propriété par défaut
cordialement
merci Whismeril :o)
Toutefois, le "value" n'est pas nécessaire: cette propriété est la propriété par défaut
cordialement
Vous allez encore me réprimander....
Mais je comprend strictement rien à ce que vous me dites....(quand je vous dit que je suis nulle c'est que je suis vraiment nulle).
"Si on regarde la propriété Address d'un Range dans l'aide en ligne (faut sélectionner le texte et cliquer F1) on voit que c'est un string."
C'est quoi un string?
Qu'est ce qu'il faut que je fasse?
Mais je comprend strictement rien à ce que vous me dites....(quand je vous dit que je suis nulle c'est que je suis vraiment nulle).
"Si on regarde la propriété Address d'un Range dans l'aide en ligne (faut sélectionner le texte et cliquer F1) on voit que c'est un string."
C'est quoi un string?
Qu'est ce qu'il faut que je fasse?
Un string est une chaine de caractère, du texte.
https://fr.wikipedia.org/wiki/Cha%C3%AEne_de_caract%C3%A8res
Le logiciel de programmation tout seul, ne va pas savoir si toto est le nom d'une variable ou le texte toto, souvent (c'est le cas en VBA), un string est écrit entre guillemets pour le reconnaitre.
Sans guillemets, VBA va chercher une variable qui s'appelle $Q$2, et ne la trouvera pas
J'ai laissé le test avec Target.Value, car mon Excel n'était pas content sans.
https://fr.wikipedia.org/wiki/Cha%C3%AEne_de_caract%C3%A8res
Le logiciel de programmation tout seul, ne va pas savoir si toto est le nom d'une variable ou le texte toto, souvent (c'est le cas en VBA), un string est écrit entre guillemets pour le reconnaitre.
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address=$Q$2 then If Target="reçu" then UserForm2.Show End if End sub
Sans guillemets, VBA va chercher une variable qui s'appelle $Q$2, et ne la trouvera pas
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address="$Q$2" then 'cette fois c'est le texte $Q$2 qui est testé If Target.Value="reçu" then UserForm2.Show End if End sub
J'ai laissé le test avec Target.Value, car mon Excel n'était pas content sans.
Maintenant que j'ai réussi ça, j'ai mon userform (qui me permet d'entrer du texte dans des cellules d'une certaine ligne)qui s'ouvre quand je met "reçu" en Q2. comment je fait pour que mon userform entre mon texte dans la ligne ou j'écris reçu ?
Exemple: si en Q3 j'écris reçu j'aimerais que ce que j'écris dans mon userform se mette sur la ligne 3...Mais pour l'instant ça ne se met que dans la ligne 2... Peut importe l'endroit De la colonne Q ou je marque Reçu...
J'espère avoir été assez claire...
Exemple: si en Q3 j'écris reçu j'aimerais que ce que j'écris dans mon userform se mette sur la ligne 3...Mais pour l'instant ça ne se met que dans la ligne 2... Peut importe l'endroit De la colonne Q ou je marque Reçu...
J'espère avoir été assez claire...
J'ai pris Q3 comme exemple mais ça aurait pu être Q5, Q6.... enfaite à chaque fois que je sélectionne "reçu" sur une ligne, j'aimerais que ce que j'écris dans mon UserForm, apparaisse à la suite de cette même ligne et non dans la ligne 2 comme actuellement.
Pourquoi ne pas le dire au départ ? :-((
maintenant, tu introduis encore un truc
... j'aimerais que ce que j'écris dans mon UserForm, apparaisse à la suite de cette même ligne et...
Il faut bien te rendre compte que ce que tu demandes n'est pas forcément facile et que personne ne veut passer parfois plusieurs heures à essayer de résoudre un problème bénévolement pour se voir dire après coup « En fait, il faudrait que… (rarement, je n'ai pas bien expliqué, excusez moi)…»
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 17 Then
If Target = "reçu" Then UserForm2.Show
End If
End Sub
maintenant, tu introduis encore un truc
... j'aimerais que ce que j'écris dans mon UserForm, apparaisse à la suite de cette même ligne et...
Il faut bien te rendre compte que ce que tu demandes n'est pas forcément facile et que personne ne veut passer parfois plusieurs heures à essayer de résoudre un problème bénévolement pour se voir dire après coup « En fait, il faudrait que… (rarement, je n'ai pas bien expliqué, excusez moi)…»