Macro excel

Macro excel - VB/VBA/VBS - Programmation

Marsh Posté le 15-11-2009 à 19:56:34    

Bonjour,      
Pouvez vous m'aider      
1er question      
je cherche à lancer une macro au changement de cellule ( sur toute la feuille)      
2eme question      
je cherche à changer la couleur de différentes cellules      
 
 1 2 3 4 5
A JACK    
B      
C PAUL    
,,,      
X      
si A1=jack alors A3 et A5 en rouge  
si A1= "" alors A3 et A5 en transparant  
si A1=Paul  alors A2 et A4 en vert
valable sur toute la colonne A1 à ...X1  
 
Merci par avance  

Reply

Marsh Posté le 15-11-2009 à 19:56:34   

Reply

Marsh Posté le 16-11-2009 à 23:17:43    

Voilà la macro qui correspond à ton énoncé, si j'ai bien compris (il n'y a pas de lignes A à X, ce sont les colonnes qui sont repérées par des lettres).

 

Fais un clic droit sur l'onglet de la feuille où tu veux que la macro tourne puis clique sur "Visualiser le code"
Ensuite fait un copier-coller du code suivant :

 


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

 

Dim intLigne As Integer

 

'N° de ligne courante :
intLigne = ActiveCell.Row

 

'Si le numéro de ligne cliquée est inférieur ou égal à 22 (ligne "X" )
If intLigne <= 22 Then

 

   'Action suivant la valeur de la première cellule de la ligne courante :
    Select Case Cells(intLigne, 1)
        Case "Jack" 'Si la valeur de la cellule est égale à Jack :
            Cells(1, 3).Interior.Color = vbRed 'cellule A3 en rouge
            Cells(1, 5).Interior.Color = vbRed 'cellule A5 en rouge
       
        Case "Paul" 'Si la valeur de la cellule est égale à Paul :
            Cells(1, 2).Interior.Color = vbGreen 'cellule A2 en vert
            Cells(1, 4).Interior.Color = vbGreen 'cellule A4 en vert
       
        Case "" 'Si la cellule est vide
            Cells(1, 3).Interior.ColorIndex = xlNone 'cellule A3 tranparente
            Cells(1, 5).Interior.ColorIndex = xlNone 'cellule A5 tranparente
   
    End Select
   
End If
End Sub

 

De rien :)


Message édité par otobox le 16-11-2009 à 23:23:43

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 17-11-2009 à 00:42:18    

Merci de ta réponse aussi rapide
mais je n'arrive pas à la faire fonctionner
je tape "paul" en A1 rien ce passe
encore merci OtObOx

Reply

Marsh Posté le 17-11-2009 à 19:28:59    

3 pistes :
1) as tu effacé le code qui s'inscrit automatiquement après avoir fait "Visualiser le code" ? Il faut que le module soit vide avant de coller le code.
2) Tu tapes paul au lieu de Paul (cette macro est sensible à la casse)
3) Tu tapes sur la touche "entrer" et la cellule active est celle de la ligne en dessous et la macro ne marche pas (tapes plutôt la touche TAB) pour passer à la cellule à droite de la cellule A1

 

Dans le 3e cas il faut dans ce cas parcourir toute la liste A1:A22 pour mettre à jour les cellules. Je n'ai pas le temps de le faire pour le moment.


Message édité par otobox le 17-11-2009 à 19:29:21

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 18-11-2009 à 00:43:33    

Ok cela marche
je mets Paul en A1 cela change la couleur de B1 et D1 "couleur verte" donc super  
mais quand je mets Paul en A18 cela change la couleur de B1 et D1 "couleur verte"
j'aimerais Avoir la couleur sur B18 et D18
mon but est de faire un masque de saisi
donc soit "Paul ou Jack" sera ecrit de A1 à A1000
merci pour tous

Reply

Marsh Posté le 18-11-2009 à 12:30:27    

Bonjour,
l'usage de la mise en forme conditionnelle n'est-il pas adapté à ton problème??
Cordialement

Reply

Marsh Posté le 18-11-2009 à 17:45:08    

C'est vrai que la mise en forme conditionnelle convient parfaitement si tu veux que ça soit les cellules en face du nom qui changent de couleur.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 18-11-2009 à 19:31:18    

Le problème de la forme conditionnelle est que Je ne marque pas en B1 et D1 Paul, je le marque juste en A1 donc A1 change de couleur mais pas B1 ni D1
Merci comme même

Reply

Marsh Posté le 18-11-2009 à 21:10:31    

Bonsoir,
tu mets pour b1 et d1 la formule:  =A1="jack"dans la mise en forme, tu choisis ta couleur,  
tu ajoutes une deuxième condition avec la formule: =A1="Paul", tu choisis sa couleur et tu étends sur les autres cellules.
Codialement


Message édité par seniorpapou le 18-11-2009 à 21:16:09
Reply

Marsh Posté le 18-11-2009 à 22:19:13    

ok nickel
est si j'ai une 4eme condition?

Reply

Marsh Posté le 18-11-2009 à 22:19:13   

Reply

Marsh Posté le 19-11-2009 à 06:40:02    

Bonjour,
que veux tu dire ??
Quelle version d'Excel as-tu?
Cordialement

Reply

Marsh Posté le 19-11-2009 à 07:43:02    

version 2003 d'Excel
dans format/mise en forme conditionnelle
j'ai la possibilité de mettre que 3 conditions et j'ai besoin d'une 4eme
condition1         =A1="jack"     couleur rouge  ok
condition2         =A1="Paul"     couleur vert  ok
condition3         =A1="Alex"     couleur bleu  ok
condition4         =A1="Bob"     couleur jaune   impossible car maxi 3 conditions
Cordialement

Reply

Marsh Posté le 19-11-2009 à 08:07:28    

RE,
quelle idée que de définir ses besoins au compte goutte!!!!!
où veux-tu en venir exactement??
Si c'est :
j'ai des noms en colonne A, et pour chaque nom en colonne A je veux définir une couleur spécifique en colonne B et D sur la ligne correspondant au nom...
alors le problème est différent et une macro est necessaire.....retour à la case OtObOx
et je pense qu'il te faudra définir, sur une feuille, la couleur désirée pour chaque nom.  
 
A tout à l'heure


Message édité par seniorpapou le 19-11-2009 à 08:08:16
Reply

Marsh Posté le 19-11-2009 à 19:28:58    

Je tenais à vous remercier de votre aide à tous les 2, j'ai trouver la solution grâce à vous ( je n'avais pas besoin d'une 4eme condition )

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed