Macro sur feuille Excel

[Résolu]
Signaler
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonsoir,

Voila mon problème. Je voudrais lancer une macro automatiquement lorsque l'utilisateur rentre une donnée dans la cellule et si possible avec une fonction "si" ou similaire.

Merci

12 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonsoir,
Utilise alors l'évènement selectionchange de ta feuille. Son paramètre target est à utiliser pour subordonner le déclenchement de ta macro au fait que la cellule cliquée/sélectionnée est la bonne.
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
1) le paramètre target est là pour celà !
target.row retourne le n° de la ligne de la cellule modifiée
Target.Column : celui de sa colonne ...

2) que cherches-tu à simuler ? et pourquoi simuler ? Appelle tout simplement l'évènement click du bouton concerné, pardi !



____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

Bonsoir,

Comment fait on pour accéder ces paramètres ? c'est une base de donnée donc je doit pouvoir répéter la même manipulation pour chaque ligne (G15,G16,G17 etc...)

Merci beaucoup.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Attends (lu trop vite). Si tu veux qu'elle se déclenche lorsque l'utilisateur rentre une donnée, utilise plutôt l'évènement change tout court (également doté du paramètre target).
Ta macro se déclenchera alors lorsque l'utilisateur passera à une autre cellule (pas en cours de saisie, car une cellule ne connaît pas d'évènement en cours de frappe)

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

Ok et le fait de valider sur entrée peut elle déclenché cet événement change ?

Merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Si (c'était un minimum) tu avais essayé, tu saurais déjà (au lieu de poser cette question) que l'évènement change ne se déclenche que lorsque l'on a changé la valeur de la cellule. Ton appui sur la touche ENTER seul ne déclenchera rien si la valeur de la cellule n'a pas été changé.
Alors ? (je veux bien que tu demandes de l'aide, mais il y a un minimum que l'on attend de toi : au moins d'essayer ce que tu penses ...)
ERt si, maintenant, tu nous exposais tranquilement les tenants et aboutissants ? On aurait peut-êtreplus de chances de t'aider (si elle existe) à trouver une solution, non ? (ne serait-ce que parce que l'appui sur la touche ENTER fait passer à la cellule en dessous et déclenche donc l'évènement selectionChange, exploitable en fonction de ce que tu cherches à faire, mais avec tous les risques liées au fait que ta macro se déclenchera alors chaque fois que, étant passé sur la cellule concernée, tu passeras à une autre cellule autrement que par la touche ENTER !!!!).
Sois donc complet et précis et on verra ce qu'il est ou non possible de faire.

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Et maintenant, expliquons nous un peu :
voilà ce que disait ton premier message :

Voila mon problème. Je voudrais lancer une macro automatiquement lorsque l'utilisateur rentre une donnée dans la cellule

On est loin de la seule touche ENTER ! (sans donnée saisie ...!)
Et si une donnée a été saisie (donc si la valeur de la cellule a été modifiée) ===>>> on en revient à l'évènement Change (question de logique) quel que soit le moyen de sélectionner (par touche ENTER ou autrement) une autre cellule !
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

Bonsoir,

Je débute sur la "vrai programmation " excel donc desfois je pose des questions bêtes pour conforter ce que je pense ou approfondir la chose.
J'ai choisi, comme conseillé, "change".
Voila le programme :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim PlageDonéee As Range
Dim Intersection As Range

Set PlageDonnée = Range("Q15:Q10000")

Set Intersection = Intersect(Target, PlageDonnée)

If Not (Intersection Is Nothing) Then
MsgBox "Envoi du tri"
End If

End Sub


Seulement j'ai un autre problème. J'ai besoin de connaitre le numéro de la ligne où l'utilisateur a rentré la donnée mais aussi simuler l'appuie d'un bouton situer sur la feuille excel.

Comment connaitre le numéro de la ligne ? Et comment faire pour simuler l'appuie sur ce bouton ?

Merci beaucoup
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

J'ai trouvé la solution pour le clic sur le bouton. Il suffisait tout simplement de faire : "Call CommandButton3_Click ". Comme quoi le plus simple reste le mieux.

Par contre, connaitre la ligne, je n'ai pas trouvé
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Par contre, connaitre la ligne, je n'ai pas trouvé 

Ah bon ?
Et tu m'as lu, au moins ?
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Messages postés
87
Date d'inscription
jeudi 5 novembre 2009
Statut
Membre
Dernière intervention
3 janvier 2012

Merci ucfoutu ! C'est bon tout marche comme il faut. Seulement, par curiosité, j'ai deux questions :

Comment faire lorsque que c'est une macro qui rempli une cellule pour lancer une autre macro (la fonction change ne marche pas)?

Peut on empecher l'exécution du programme "Private Sub Worksheet_Change(ByVal Target As Range)" ?

Merci

Bonne soirée
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
1) L'évènement change n'intervient en effet pas si l'on modifie dynamiquement une cellule.
2) tu veux maintenant inhibet l'évènement change ? oh ! détaille voir un peu ce que tu cherches à faire, car je me perds dans ce qui parait être une contradiction.

Pour le 1) maintenant : puisque la seconde cellule est modifiée par la macro déclenchée lors de la modification de la 1èere cellule, tu en connais forcément l'adresse et je ne vois pas ce qui t'empêcherait alors de lancer ta seconde macro, dans la foulée ...
Sur ce, je vais faire dodo ...

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.