Activé une macro via la valeur d'une cellule

gaby66

XLDnaute Occasionnel
Bonjour,

J'aimerais activer une macro sans bouton que j'ai déjà effectuer, mais plutôt avec la valeur d'une cellule.
En l’occurrence pour dans mon cas j'aimerais que si la cellule "Z98" affiche "1", sa déclenche la macro.

Pour Info, la case "Z98" est dans une feuille appeler "PREPARATION", et la cellule possède une formule dedans, si sa peut vous aidez.

Merci pour votre aide
 

MichD

XLDnaute Impliqué
Re : Activé une macro via la valeur d'une cellule

Bonjour,

Fais un clic droit sur l'onglet de la feuille "PREPARATION" et colle ce code :
à titre d'exemple :

'-----------------------------------
Private Sub Worksheet_Calculate()
If Range("Z98") = 1 Then
Application.EnableEvents = False
Call LaMacro
Application.EnableEvents = True
End If
End Sub

'-----------------------------------
Sub LaMacro()
MsgBox "Bonjour"
End Sub
'-----------------------------------


MichD
--------------------------------------------------------
 

gaby66

XLDnaute Occasionnel
Re : Activé une macro via la valeur d'une cellule

super, sa m'a l'air de fonctionner, mais juste un petit détail qui bug lol
je te montre ma macro :

Private Sub Worksheet_Calculate()
If Range("Z98") = 1 Then
Application.EnableEvents = False
Sheets("IMPORT").Select
ActiveWindow.SmallScroll Down:=-27
Range("A7:200").Select
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWindow.SmallScroll Down:=-180
Selection.Copy
Sheets("IMPORT2").Activate
Range("A7").Select
ActiveSheet.Paste
Sheets("PREPARATION").Select
Application.EnableEvents = True
End If
End Sub

Sa plante au niveau de : ActiveWindow.SmallScroll Down:=-27

Je pense qu'il faudrait que je mette une temporisation avant que ça se déclenche, car ça vient a mon avis du faite que sa se passe trop vite.

Est-ce que je pourrais rajouter juste 1 secondes avant qu'il déclenche la macro ?
 

MichD

XLDnaute Impliqué
Re : Activé une macro via la valeur d'une cellule

C'est toujours une bonne idée de décrire ce que tu veux effectuer comme
travail. Si tu désires simplement copier une plage de données, ceci est suffisant.

Private Sub Worksheet_Calculate()
If Range("Z98") = 1 Then
Application.EnableEvents = False
Sheets("IMPORT").Range("A7:200").Copy Sheets("IMPORT2").Range("A7")
Application.EnableEvents = True
End if
End Sub
 

gaby66

XLDnaute Occasionnel
Re : Activé une macro via la valeur d'une cellule

En faite la feuille "IMPORT", possède une requête, qui va chercher des données sur internet.
Une fois que la requête apparaît, sa m'affiche un "1" dans la case "Z98" de la feuille "PREPARATION"
Une fois que la requête apparaît donc, sa déclenche de suite la macro.
Et ce que j'aimerais c'est que la feuille "IMPORT" soit recopier dans la feuille "IMPORT2"

A mon avis le bug vient que, dès que la requête apparaît dans "IMPORT", de suite après la macro ce déclenche et dit de recopier de "IMPORT" vers "IMPORT2", a mon avis sa lui laisse pas le temps, c'est pour ça que je me suis poser la question si c'était possible d'ajouter une temporisation de 1 seconde avant que la macro sé déclenche par exemple.

Tu vois ce que je veux dire ???
 

MichD

XLDnaute Impliqué
Re : Activé une macro via la valeur d'une cellule

La même macro mais avec une temporisation de 2 secondes.
Tu adaptes la durée après tests...


Private Sub Worksheet_Calculate()
Dim T As Double

If Range("Z98") = 1 Then
T = Timer + 2 ' 2 signifie 2 secondes.
Do While T >= Timer
DoEvents
Loop
Application.EnableEvents = False
Sheets("IMPORT").Range("A7:200").Copy Sheets("IMPORT2").Range("A7")
Application.EnableEvents = True
End If
End Sub


MichD
---------------------------------------------
 

gaby66

XLDnaute Occasionnel
Re : Activé une macro via la valeur d'une cellule

ça n'a rien changer, toujours même erreur a la même ligne :

Sheets("IMPORT").Range("A7:200").Copy Sheets("IMPORT2").Range("A7")

la temporisation n'a rien changer :(

J'essaye de t'expliquer mieu ce que je fais.

Je vais dans "IMPORT", je fais modifier requete, j'importe la requete, et la j'attend environ 30 seconde que la requete apparait.
Une fois que une plage de données apparait, sa m'envoi automatiquement un "1" dans la celllule z98 de la feuille "PREPARATION", ce qui a pour effet de lancé la macro, que tu m'as marquer sur le message juste avant.

Et c'est la que sa bug, ça veut pas copier les données de l'IMPORT qui vienne d'apparaitre, vers l'IMPORT2

ça te parle mieux la ???
 

gaby66

XLDnaute Occasionnel
Re : Activé une macro via la valeur d'une cellule

AH :)
Sa marche un peu mieux, mais c'est pas encore ça lol, sa me copie l'IMPORT dans l'IMPORT2, mais uniquement la colonne "A"
Hors j'aimerais de la colonne "A" jusqu’à "O", et de la ligne 7 à 200
 

gaby66

XLDnaute Occasionnel
Re : Activé une macro via la valeur d'une cellule

tu es juste grandiose :)
Sa fonctionne,
Il y a juste un détail que j'ai remarquer :
Une fois que c'est copier dans IMPORT2, si je désire supprimer une ligne ou modifier un truc dans IMPORT2, la macro re-fonctionne et du coup sa relance de nouveau un copier coller de l'IMPORT vers l'IMPORT2. Moi j'aimerais juste que ça copie la première fois mais que ensuite je puisse en faire ce que je veux de l'IMPORT2 lol
 

MichD

XLDnaute Impliqué
Re : Activé une macro via la valeur d'une cellule

Si la cellule Z98 contient une formule, la seule macro événementielle susceptible
d'automatiser la copie est "Calculate".

Qu'as-tu comme formule dans Z98?


MichD
-----------------------------------------------
 

gaby66

XLDnaute Occasionnel
Re : Activé une macro via la valeur d'une cellule

=SI(F11>0;"1";"0")

Sauf que F11, reste toujours supérieur a 0, une fois que l'IMPORT est chargé, et ça change pas, donc la case Z98 restera a "1".

Il faudrait que je fasse en sorte que quand la macro est activé une fois, ça modifie la valeur de la case Z98.

Peut être que dans la macro on peut rajouter a la fin un truc qui change la résultat "1", qui est dans la case Z98, pour faire en sorte que ça devienne "0" par exemple. non ?
 

MichD

XLDnaute Impliqué
Re : Activé une macro via la valeur d'une cellule

Je t'ai fait un petit exemple de ce qui est possible de faire.

Pour cela, j'ai utilisé un module de classe. Tu peux reproduire
la même structure dans ton classeur.

Attention, au nom des variables.

Désolé pour le délai, mais ma disponibilité a ses limites.
 

Pièces jointes

  • Exemple - Module de classe - QueryTable.xlsm
    31.1 KB · Affichages: 34

Discussions similaires