Plusieurs macro sur une feuille excel ?
Fermé
AMISDAL
Messages postés
162
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
24 mars 2016
-
10 févr. 2011 à 10:55
AMISDAL Messages postés 162 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 24 mars 2016 - 14 févr. 2011 à 15:51
AMISDAL Messages postés 162 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 24 mars 2016 - 14 févr. 2011 à 15:51
A voir également:
- Plusieurs macro sur une feuille excel ?
- Liste déroulante excel - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Déplacer une colonne excel - Guide
- Calculer une moyenne sur excel - Guide
10 réponses
mic13710
Messages postés
1088
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
13 mai 2021
354
14 févr. 2011 à 09:34
14 févr. 2011 à 09:34
Il ne peut y avoir qu'un seul Private sub worksheet par feuille.
Il faut combiner les deux macros en une seule.
Michel
Il faut combiner les deux macros en une seule.
Michel
Thedrake
Messages postés
531
Date d'inscription
samedi 14 mars 2009
Statut
Membre
Dernière intervention
28 février 2013
132
10 févr. 2011 à 11:03
10 févr. 2011 à 11:03
Salut
Tu peux toujours modifier le nom d'une des macro, et de modifier à l'intérieur tout ce qui se référait à ce nom (peut être un gros boulot pour les longues macro)
Tu peux toujours modifier le nom d'une des macro, et de modifier à l'intérieur tout ce qui se référait à ce nom (peut être un gros boulot pour les longues macro)
AMISDAL
Messages postés
162
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
24 mars 2016
2
14 févr. 2011 à 09:08
14 févr. 2011 à 09:08
Cela ne marche toujours pas. Voici mes deux macro
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cTitres, cdebuts, cfins
Dim pl As Long, col As Long, ok As Boolean
' saisir les n° des colonnes des plages à contrôler
cTitres = Array(1, 8) 'colonnes titre
cdebuts = Array(2, 9) ' colonnes début des plages
cfins = Array(5, 12) ' colonnes fin des plages
' détection si dans plages
For pl = 0 To UBound(cTitres)
If Target.Column >= cdebuts(pl) And Target.Column <= cfins(pl) Then Exit For
Next pl
If pl > UBound(cTitres) Then Exit Sub
' recherche "x"
For col = cfins(pl) To cdebuts(pl) Step -1
If LCase(Cells(Target.Row, col)) = "x" Then
Cells(Target.Row, cTitres(pl)).Interior.ColorIndex = Cells(1, col).Interior.ColorIndex
ok = True
Exit For
End If
Next col
If Not ok Then Cells(Target.Row, cTitres(pl)).Interior.ColorIndex = xlNone
End Sub
Et la deuxième :
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, Range("B2:B10,F2:F10")) Is Nothing Then Exit Sub
Target.Offset(0, -1) = Now
End Sub
Merci de me donner la solution car je ne suis vraiment pas fortiche pour les macros mais j'adore les utiliser !!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cTitres, cdebuts, cfins
Dim pl As Long, col As Long, ok As Boolean
' saisir les n° des colonnes des plages à contrôler
cTitres = Array(1, 8) 'colonnes titre
cdebuts = Array(2, 9) ' colonnes début des plages
cfins = Array(5, 12) ' colonnes fin des plages
' détection si dans plages
For pl = 0 To UBound(cTitres)
If Target.Column >= cdebuts(pl) And Target.Column <= cfins(pl) Then Exit For
Next pl
If pl > UBound(cTitres) Then Exit Sub
' recherche "x"
For col = cfins(pl) To cdebuts(pl) Step -1
If LCase(Cells(Target.Row, col)) = "x" Then
Cells(Target.Row, cTitres(pl)).Interior.ColorIndex = Cells(1, col).Interior.ColorIndex
ok = True
Exit For
End If
Next col
If Not ok Then Cells(Target.Row, cTitres(pl)).Interior.ColorIndex = xlNone
End Sub
Et la deuxième :
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, Range("B2:B10,F2:F10")) Is Nothing Then Exit Sub
Target.Offset(0, -1) = Now
End Sub
Merci de me donner la solution car je ne suis vraiment pas fortiche pour les macros mais j'adore les utiliser !!
AMISDAL
Messages postés
162
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
24 mars 2016
2
14 févr. 2011 à 09:43
14 févr. 2011 à 09:43
Et comment ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
14 févr. 2011 à 09:50
14 févr. 2011 à 09:50
Bonjour,
Faut déterminer la cellule qui a été modifiée et agir en conséquence.
A+
Faut déterminer la cellule qui a été modifiée et agir en conséquence.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, LaPlage1) Is Nothing Then '1er code Macro ElseIf Not Intersect(Target, LaPlage2) Is Nothing Then '2ém code Macro End If End Sub
A+
AMISDAL
Messages postés
162
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
24 mars 2016
2
14 févr. 2011 à 10:26
14 févr. 2011 à 10:26
La deuxieme macro ne concerne aucunne des cellules de la premiere macro
mic13710
Messages postés
1088
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
13 mai 2021
354
14 févr. 2011 à 11:02
14 févr. 2011 à 11:02
Je pense que la solution de lermite est suffisamment claire.
Il ne peut y avoir qu'un seul Private sub worksheet_change pour la feuille.
Donc, il suffit de surveiller la première condition et si elle est exacte on exécute la macro 1 sinon, on vérifie la deuxième condition et si elle est exacte on exécute la macro 2. On peut y mettre autant d'autres conditions que l'on souhaite et si aucune est exacte, on sort de la macro.
Michel
Il ne peut y avoir qu'un seul Private sub worksheet_change pour la feuille.
Donc, il suffit de surveiller la première condition et si elle est exacte on exécute la macro 1 sinon, on vérifie la deuxième condition et si elle est exacte on exécute la macro 2. On peut y mettre autant d'autres conditions que l'on souhaite et si aucune est exacte, on sort de la macro.
Michel
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 14/02/2011 à 11:43
Modifié par lermite222 le 14/02/2011 à 11:43
J'ai pas compris les adresses de ta 1ère macro mais voilà un exemple...
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Private Sub Worksheet_Change(ByVal Target As Range) Dim Col As Integer If Not Intersect(Target.Columns, Columns("A:H")) Is Nothing Then '1er code - recherche "x" For Col = 8 To 1 Step -1 If LCase(Cells(Target.Row, Col)) = "x" Then Target.Interior.ColorIndex = Cells(1, Col).Interior.ColorIndex Exit For End If Next Col If Col = 0 Then Target.Interior.ColorIndex = xlNone ElseIf Not Intersect(Target, Range("B2:B10,F2:F10")) Is Nothing Then '2ém code Target.Offset(0, -1) = Now End If End Sub
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
14 févr. 2011 à 11:42
14 févr. 2011 à 11:42
Ou dans l'autre sens ...
Private Sub Worksheet_Change(ByVal Target As Range) Dim Col As Integer If Not Intersect(Target, Range("B2:B10,F2:F10")) Is Nothing Then '2ém code Target.Offset(0, -1) = Now ElseIf Not Intersect(Target.Columns, Columns("A:H")) Is Nothing Then '1er code - recherche "x" For Col = 8 To 1 Step -1 If LCase(Cells(Target.Row, Col)) = "x" Then Target.Interior.ColorIndex = Cells(1, Col).Interior.ColorIndex Exit For End If Next Col If Col = 0 Then Target.Interior.ColorIndex = xlNone End If End Sub
AMISDAL
Messages postés
162
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
24 mars 2016
2
14 févr. 2011 à 11:55
14 févr. 2011 à 11:55
Les adresses de la première macro sont des cellules réparties tout le long du tableau et qui ont une action sur la première cellule
AMISDAL
Messages postés
162
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
24 mars 2016
2
14 févr. 2011 à 11:59
14 févr. 2011 à 11:59
Plus exactement quand j'interviens sur une cellule( par exemple G5), la couleur du titre (par exemple G1) se reporte sur la couleur de la première cellule (par exemple A5)
AMISDAL
Messages postés
162
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
24 mars 2016
2
14 févr. 2011 à 12:09
14 févr. 2011 à 12:09
Quelle adresse dois je mettre : la cellule d'intervention, la cellule de donnée ou la cellule de reception (elle sont toutes séparées par d'autres cellules)
Merci
Merci
lermite222
Messages postés
8702
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 14/02/2011 à 12:11
Modifié par lermite222 le 14/02/2011 à 12:11
Pour ça faut juste changer la ligne (comme tu l'a mis dans ton exemple)
Juste dans tes plages, dans l'exemple que je t'ai donner il y a "recouvrement", donc ça peu pas aller convenablement.
Quel est la plage de la macro qui change les couleurs. ?
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Cells(Target.Row, 1).Interior.ColorIndex = Cells(1, Col).Interior.ColorIndex
Juste dans tes plages, dans l'exemple que je t'ai donner il y a "recouvrement", donc ça peu pas aller convenablement.
Quel est la plage de la macro qui change les couleurs. ?
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
AMISDAL
Messages postés
162
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
24 mars 2016
2
14 févr. 2011 à 15:51
14 févr. 2011 à 15:51
Pour plus de clarté, j'ai mis un fichier test joint.
Explication :
Quand je mets une croix dans les colonnes oou est indiqué une couleur, la cellule dans la colonne titre se met de la meme couleur.
Et quand je mets une croix dans la colonne fait, la date du jour s'inscrit dans la colonne date
http://www.cijoint.fr/cjlink.php?file=cj201102/cijYzOGo2f.xls
Explication :
Quand je mets une croix dans les colonnes oou est indiqué une couleur, la cellule dans la colonne titre se met de la meme couleur.
Et quand je mets une croix dans la colonne fait, la date du jour s'inscrit dans la colonne date
http://www.cijoint.fr/cjlink.php?file=cj201102/cijYzOGo2f.xls