Comment activer deux macros dans le même code

Résolu/Fermé
Bremic83 - 6 mars 2010 à 17:48
 Bremic83 - 10 mars 2010 à 22:35
Bonjourà tous
Je butte actuellement surle problème suivant: J'ai deux macros qui sont dans des classeurs différents,et fonctionent très bien.

Voiçi la première:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("D25:O25")) Is Nothing Then Exit Sub
'enlève la couleur en ligne 1
Range("D25:O25").Interior.ColorIndex = xlNone
' colorie la ligne 1 de la colonne active
Cells(25, Target.Column).Interior.ColorIndex = 3
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone
Cells(27, Target.Column).Interior.ColorIndex = 6
Cells(27, Target.Column).Font.ColorIndex = 49
End Sub

Voiçi la seconde :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, [D27:O35]) Is Nothing Then MiseEnFormeColonne Target.Column - 4

End Sub

J'ai essayé de les utiliser dans le même classeur,et là,j'ai une fenêtre d'erreur,qui me signale un
problème,les deux codes commençant par: Private Sub Worksheet_SelectionChange(ByVal Target As Range), (le débogueur m'indique les mots en gras )

Je suis allé consulter "Aide",mais les explications données s'adressent à des gens beaucoup plus initiés que moi au langage informatique,et je n'y ai rien compris.
Quelqu'un pourrait-il m'expliqueren langage clair,ce que je dois changer dans ces codes,pour pouvoir les utiliser sur le même tableau ?

Merci d'avance à qui s'intéressera à ce petit problème.

A plus

Bremic83

20 réponses

Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
6 mars 2010 à 17:55
Bonjour,
probablement comme cela :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("D25:O25")) Is Nothing Then Exit Sub
'enlève la couleur en ligne 1
Range("D25:O25").Interior.ColorIndex = xlNone
' colorie la ligne 1 de la colonne active
Cells(25, Target.Column).Interior.ColorIndex = 3
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone
Cells(27, Target.Column).Interior.ColorIndex = 6
Cells(27, Target.Column).Font.ColorIndex = 49

If Not Intersect(Target, [D27:O35]) Is Nothing Then MiseEnFormeColonne Target.Column - 4

End Sub
0
Bonjour,

C'est peut-être bête ce que je vais te dire (mes connaissances sont limités) mais pourquoi ne pas coller la deuxième dans la première ?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("D25:O25")) Is Nothing Then Exit Sub
'enlève la couleur en ligne 1
Range("D25:O25").Interior.ColorIndex = xlNone
' colorie la ligne 1 de la colonne active
Cells(25, Target.Column).Interior.ColorIndex = 3
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone
Cells(27, Target.Column).Interior.ColorIndex = 6
Cells(27, Target.Column).Font.ColorIndex = 49

If Not Intersect(Target, [D27:O35]) Is Nothing Then MiseEnFormeColonne Target.Column - 4

End Sub

Cordialement,
Migou
0
Re à Le Pingou,et Migou76

Tout d'abord,merci pour vos réponses.( Elles sont toutes deux exactement les mêmes ! )

J'ai copié les deux dans mon code et j'obtiens la même réponse:

Fenêtre d'erreur: Erreur de compilation
Sub ou Fonction non définie

Et,dans le texte,: " MiseEnFormeColonne"est surligné en bleu.

Dans le tebleau,la première macro fonctionne,mais pas la deuxième.

Je n'y comprends rien .

A plus

Cordialement
Bremic83
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
6 mars 2010 à 22:05
Bonjour,
Comme cela se sera correcte :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("D25:O25")) Is Nothing Then
'enlève la couleur en ligne 1
Range("D25:O25").Interior.ColorIndex = xlNone
' colorie la ligne 1 de la colonne active
Cells(25, Target.Column).Interior.ColorIndex = 3
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone
Cells(27, Target.Column).Interior.ColorIndex = 6
Cells(27, Target.Column).Font.ColorIndex = 49
End If
If Not Intersect(Target, [D27:O35]) Is Nothing Then MiseEnFormeColonne Target.Column - 4

End Sub
0
Bonsoir Pingou,

J'ai cherché où était l'erreur, t'es trop fort, t'as trouvé, mais t'as oublié le deuxième end if (je crois) le v'là :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("D25:O25")) Is Nothing Then
'enlève la couleur en ligne 1
Range("D25:O25").Interior.ColorIndex = xlNone
' colorie la ligne 1 de la colonne active
Cells(25, Target.Column).Interior.ColorIndex = 3
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone
Cells(27, Target.Column).Interior.ColorIndex = 6
Cells(27, Target.Column).Font.ColorIndex = 49
End If
If Not Intersect(Target, [D27:O35]) Is Nothing Then MiseEnFormeColonne Target.Column - 4
End If
End Sub

Très cordialement,
Migou
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
6 mars 2010 à 22:31
Bonjour,
Ce n'est pas nécessaire pour le deuxième, mais par contre il faut inverser la première condition et la procédure devient:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Insérer le (Not) après (Is) ===> pas vide on exécute les instructions
If Intersect(Target, Range("D25:O25")) Is Not Nothing Then
'enlève la couleur en ligne 1
Range("D25:O25").Interior.ColorIndex = xlNone
' colorie la ligne 1 de la colonne active
Cells(25, Target.Column).Interior.ColorIndex = 3
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone
Cells(27, Target.Column).Interior.ColorIndex = 6
Cells(27, Target.Column).Font.ColorIndex = 49
End If
If Not Intersect(Target, [D27:O35]) Is Nothing Then MiseEnFormeColonne Target.Column - 4

End Sub
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
6 mars 2010 à 22:42
Bonsoir,

Je pense qu'il faut garder la 1ère proposition, et MiseEnFormeColonne est une macro qu'il faut ramener de l'autre classeur. Non ?
eric
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
6 mars 2010 à 22:51
Bonjour eriiic,
J'avais pensé que les 2 classeurs ne faisaientt plus qu'un ....!
Merci, bon dimanche.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249 > Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025
6 mars 2010 à 22:55
j'ai l'impression que non
et la syntaxe then MiseEnFormeColonne Target.Column - 4 est très bizarre je trouve, j'aurais bien mis des parenthèses
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
6 mars 2010 à 23:18
Bonjour eriiic,
Oui je le pense aussi, d'ailleurs je vais les mettre dans le sens dodo ...
0
Bonjour à tous,Le Pingou,Eriiic,et Migou76

Je rencontre toujours des difficultés pour mettre les solutions proposées en place,il y a à chaque fois une fenêtre d'erreur ! Décourageant !
J'ai essayé de changer,en reprenant le code de la première et en changeant les plages de travail,mais,si
je ne fais plus apparaitre de fenêtre d'erreur,je n'obtiens aucun résultat !
La première partie fonctionne bien,l'autre : zéro,rien !
Je suppose qu'il y a quelque manip ou indication qui manque à l'appel, mais je suis incapable de trouve laquelle.
Je vous joins ce nouveau code,çi-dessous,peut-être que la solution vous apparaitra

En tous cas,quelque soit le résultat final,grand merci à tous

A plus

Bremic83



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("D25:O25")) Is Nothing Then Exit Sub
'enlève la couleur en ligne 1
Range("D25:O25").Interior.ColorIndex = xlNone
' colorie la ligne 1 de la colonne active
Cells(25, Target.Column).Interior.ColorIndex = 3
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone
Cells(27, Target.Column).Interior.ColorIndex = 6
Cells(27, Target.Column).Font.ColorIndex = 49


If Intersect(Target, Range("D27:O27")) Is Nothing Then Exit Sub
'enlève la couleur en ligne 1
Range("D27:O27").Interior.ColorIndex = xlNone
' colorie la ligne 1 de la colonne active
Cells(27, Target.Column).Interior.ColorIndex = 49
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone
Cells(28, Target.Column).Interior.ColorIndex = 20
Cells(28, Target.Column).Font.ColorIndex = 49



End Sub
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
7 mars 2010 à 11:54
Bonjour,
Que se passe-t-il avec ceci .
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
' Insérer le (Not) après (Is) ===> pas vide on exécute les instructions 
If Intersect(Target, Range("D25:O25")) Is Not Nothing Then 
'enlève la couleur en ligne 1 
Range("D25:O25").Interior.ColorIndex = xlNone 
' colorie la ligne 1 de la colonne active 
Cells(25, Target.Column).Interior.ColorIndex = 3 
Range(Cells(28, Target.Column), Cells(35, Target.Column)).Interior.ColorIndex = xlNone 
Cells(27, Target.Column).Interior.ColorIndex = 6 
Cells(27, Target.Column).Font.ColorIndex = 49 
End If 
If Not Intersect(Target, [D27:O35]) Is Nothing Then MiseEnFormeColonne Target.Column - 4 

End Sub 


Peut-être, mettre votre fichieur sur https://www.cjoint.com/ !

0
Bonjour Le Pingou.

Oui,je vide le code,avant de copier-coller le nouveau.
Cette fois,nouvelle fenêtre d'erreur :
Erreur de compilation
Utilisation incorrecte de l'objet

Et dans la ligne copiée ci-dessous,: Nothing , est surligné en bleu

If Intersect(Target, Range("D25:O25")) Is Not Nothing Then

Comme c'est de l'hébreu pour moi,je ne sais pas comment faire.
A plus

Cordialement Merci

Bremic83
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
7 mars 2010 à 13:52
Bonjour,
En complément; vous avez pris soin de supprimer la deuxième procédure dans le module de la feuille !
Si les 2 sont présantes dans le module vous aurez le message d'erreur.
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
7 mars 2010 à 18:00
Bonjour,
Corriger la ligne qui correspond au surlignage bleu par celle-ci:
If (Intersect(Target, Range("D25:o25")) Is Nothing) = False Then 

Si cela ne marche pas, peut-être, mettre votre fichier sur https://www.cjoint.com/ et poster le lien!
0
Bonsoir Le Pingou.

Ca y est, ça fonctionne comme désiré.
Il me reste à te remercier pour ta gentillesse et la patience dont tu as fait preuve à mon égard, et,bien sûr,
à saluer ta compérence.
Je remercie également Migou76 et Eriiic,pour leur participation,vous êtes tous trois très sympas.

Peut-être à plus pour une autre discussion.

Un Bremic83 ravi !
0
Bonsoir Le Pingou

Désolé de revenir sur la question que je croyais réglée hier.

Je me heurte à un curieux problème :

J'ai enregistré ton code selon tes dernières instructions,et ça fonctionne parfaitement.
J'ai voulu le copier dans un autre classeur,et je me retrouve avec la fenêtre d'erreur qui m'a déjà bien embêté:
Erreur de compilationSub ou fonction non définie et dans la ligne du code>MiseEnFormeColonne est surligné en bleu.
J'ai essayé sur un autre classeur:même résultat !
J'ai vidé ltoute les macros et les codes VBA de ces classeurs,et réenregistré le code ,sans obtenir de changement
Pourquoi celà fonctionne impeccablement sur un classeur et non sur les autres ? Mystère !

Excuses moi de te relancer,mais,je suis perdu !

A plus

Bremic83
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
9 mars 2010 à 14:26
Bonjour,
Se serait plus facile si vous pouviez mettre le classeur qui fonctionne sur https://www.cjoint.com/ et poster le lien !
Note : à quoi fait référence le texte [MiseEnFormeColonne] ?
0
Bonjour Le Pingou
D'abord,merci de me répondre.
J'ai essayé de te transmettre le classeur qui fonctionne,mais,quand je vérifie mon envoi,il ne fonctionne plus !
Il me sort le fenêtre d'erreur :Erreur de compilation ;;;etc,etc.
Je te soumets le tableau que je cherche à réaliser.
Vois si tu peux en tirer quelque chose,car,moi,je ne comprends rien à ce qui se passe.
Tu auras,peut-être une autre idée de code,et,l'essentiel est d'arriver au résultat désiré.

Merci aussi pour ta patience.
Cordialement
A plus

Bremic83


http://www.cijoint.fr/cjlink.php?file=cj201003/cijrtFmAsg.xlsm
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
9 mars 2010 à 17:51
Bonjour,
C'est très gentil, mais pour vous aidez j'ai besoin du classeur qui fonctionnait et non pas ce classeur sans macro !
0
Re LePingou
Voici l'envoi demandé.
A plBremic83

http://www.cijoint.fr/cjlink.php?file=cj201003/cijGi2cVq4.xlsm
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
9 mars 2010 à 20:45
Bonjour,
Merci c'est parfait.
Je viens de parcourir votre fichier et j'ai déjà découvert le problème.
La solution pour demain matin.
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
9 mars 2010 à 21:37
Bonjour,
J'ai un peu d'avance. Voir explication sur la feuille : https://www.cjoint.com/?djvLeMmSb6
0
Bonjour Le Pingou

Décidément,je collectionne les ennuis,
Impossible de décompresser le dossier ZIP.
J'opère de la même façon que d'habitude,je déplace le dossier,et à chaque fois,il reste ZIP
Celà m'est déjà arrivé une fois,et mon correspondant me l'a transmis en clair,essayons !

Cordialement

Bremic83
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
10 mars 2010 à 11:29
Bonjour,
Vous avez MSO 2007, alors enregistrer le fichier Zip sur le bureau, l'ouvrir et double clic sur le nom du classeur dans la partie de droite.
0
RE Le Pingou

Les manips indiquées,sont celles que je répète depuis hier soir,après réception de ce dossier ZIP
Plus celles-çi :
Menu (Démarrer)
Clicsur ( Aide et support)
Entrer "ZIP" dans textbox : " Recherches dans Aide "
Sélection " Compresser et décompresser des fichiers "ZIP "
Clic sur "Pour extraire les fichiers "

Et,j'en suis toujours au même point !

Désolé

Bremic83
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
10 mars 2010 à 13:57
Bonjour,
Qu'elle est votre système d'exploitation ?
Lorsque vous faite un double clic sur le fichier Zip qui est sur le bureau, que se passe-t-il ?
0
re Le Pingou

Suite au double clic,le dossier s'ouvre,sur les hiéroglyphes du ZIP

Il apparait une fenêtre d'erreur
Le dossier est verrouillé,par un autre utilisateur
Le dossier ...est en lecture seule,,si je veux l'utiliser Je dois cliquer sur "Notifier",et j'enaurai une copie à utiliser,en lecture seule et il me sera notifié la disponibilité du document,lorsque j'aurai quitté le site.

J'ai pourtant déjà décompressé des dossiers ZIP,mais,c'est la deuxième fois que je suis coincé comme celà.

Merci de me consacre tant de temps.

Bremic83
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454 > Bremic83
10 mars 2010 à 14:52
Bonjour,
Eh bien c'est tout simple le fichier décompressé se trouve sur votre PC et de ce fait vous avez un message d'erreur car vous ne pouvez pas ouvrir un deuxième fichier du même nom.
A vous de trouvez ou il se trouve , en principe dans un dossier qui porte le même nom sour le même répertoire que le dossier ZIp (probablement le bureau !). Il faut ouvrir ce dossier et ensuite le classeur qui si trouve.
Note : avant d'essayer à nouveau, vous fermez toutes les applications ouvertent sur votre PC.
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
10 mars 2010 à 14:35
Bonjour,
Le voila transmis en clair : https://www.cjoint.com/?dkoHCF3qde
0
Bonsoir Le Pingou.

Tout d'abord,excusez moi de pratiquer le tutoiement,je n'avais pas remarqué que vous me vouvoyiez,plus absorbé par la teneur du texte que par la forme d'expression.Ne m'en tenez pas rigueur,SVP.
Je vous remercie de m'avoir expliqué comment débloquer le dossier ZIP,Je n'aurais pas trouvé celà tout seul.

Pour ce qui concerne le code,vous me dites l'avoir mis dans le feuillet tabatrans,et les deux actions se déroulent bien.
Je n'ai pas compris ce que vous avez fait,car je compare le code dans la fenêtre "Visualiser le code" dans l'onglet "développeur",et ne trouve aucun changement avec ce qui y était précédemment.
J'ai voulu mettre ce code dans l'un de mes classeurs,et je me retrouve avec l'erreur de compilation déjà rencontrée.
Dans le doute,j'ai regardé s'il y avait quelque chose dans les macros,sans rien y trouver.
Comment faut-il faire pour insérer la deuxième action ?
Vous le constatez,je suis loin de maitriser toutes les subtilités de l'informatique ,et je crains de lasser mes correspondants.
Encore merci pour votre patience.

A plus

Bremic83
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
10 mars 2010 à 20:29
Bonjour,
Alors vous n'avez pas lu attentivement l'explication sur la feuille (rectangle rose..).
Vous avez 2 procédures
1.- La procédure événementielle [Worksheet_SelectionChange] qui sur le module de feuille
2.- Aussi une autre procédure [MiseEnFormeColonne] qui est sur le module général [Modules]
Et c'est la 2 que vous oubliez de copier dans le nouveau classeur.
0
Bonsoir Le Pingou.

Après de nombreuses tentatives sans succès,je viens ,enfin,de comprendre le processus et de réussir la mise en place sur un classeur !
Le renouvellement de l'opération ne devrait pas poser de problème.

Très sincèrement,je vous remercie,pour votre gentillesse et,à nouveau pour votre patience,et ne me tenez pas trop rigueur,du temps que je vous ai mangé,par ma lenteur à comprendre.

Je ne sais si ce sera un plaisir pour vous,mais,moi,je serais très heureux de vous retrouver dans une nouvelle discussion,à l'occasion.

Très cordialement

Bremic83
0
Le Pingou Messages postés 12229 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 9 janvier 2025 1 454
10 mars 2010 à 22:11
Bonjour,
J'espère que ceci vous éclairera : https://www.cjoint.com/?dkwkEBashM
0