Macro excel

Résolu
Signaler
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007
-
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007
-
Bonjour

Je suis nouveau et je cherche à faire une macro dans excel mais je ne connais rien...
J'aimerais que la macro mette "--" dans K1 si A1 ="prt" et ainsi de suite pour toute la page... K2= "--" si B2="prt".
Et je ne peux pas utiliser de fomules car je fais des copier coller donc macro obilgatoire...

Et une autre macro me serait utile...

Si B1 est de couleur "4" , D1 doit avoir la même couleur et si B2 est orange, D2 doit être orange...
MErci

49 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Non c'est normal.
Car nous gardons en mémoire la couleur (avec MColor)
Il faut donc ajouter au Select Case le Case ELse

Soit:
Private Sub CommandButton1_Click()
Static EnCours As Boolean
   'Pour se protéger de la "récursivité"
   If Not EnCours Then
       EnCours = True
   Else
       Exit Sub
   End If
   Dim MColor As Integer
   Application.ScreenUpdating = False 'Pour désactiver la mise à jour de l'affichage
   
   For Each c In Worksheets(1).Range("b1:b500")
       Select Case c.Value
           Case "prt": MColor = 4
                      Range("K" & c.Row).Value = "--"
           Case "unit": MColor = 6
           Case "ms": MColor = 50
           Case "os": MColor = 38
           Case "ps": MColor = 8
           Case "es": MColor = 45
           Case "obj": MColor = 48
           Case Else: MColor = 0
       End Select
       
       c.Interior.ColorIndex = MColor
       c.Font.ColorIndex = 0       If MColor 0 Then c.Font.Bold False       If MColor 4 Or MColor 45 Then Range("D" & c.Row).Interior.ColorIndex = MColor
   Next c
   
   Application.ScreenUpdating = True
   'petite ligne a rajouter si on veut le faire
   'plus d'une fois
   EnCours = False
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
La encore question de logique,

Si tu as mis "Alphacos" dans Range("K" & c.Row) pourquoi à la ligne suivante tu essaie de modifer la couleur de c (qui je te rappelle correspond à la cellule B)

Il faut donc que tu mettes Range("K" & c.Row).Font.ColorIndex = 56

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Pour trouver "SW-M" dans une chaine de caractere il te faut utiliser la méthode Instr

Exemple:
Dim MaChaine As String
MaChaine = "ABCDSW-MAFDTOF"
'1 = recherche a partir du premier caractere
If InStr(1, MaChaine, "SW-M") Then MsgBox MaChaine & " Contient SW-M"
, ----
[code.aspx?ID=41455 By Renfield]
Donc pour toi tu devras remplacer MaChaine par C.Value (ou qqch dans le genre)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
SAlut,
REssert du meme principe que

For Each c In Worksheets(1).Range("G19:G5000")
    C'est la que tu teste avec instr sur la valeur de la cellule c. 

Next c
@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
A toi de placer le code ou bon te semble
'En regle générale
If Range("A1").Value = "prt" Then Range("K1").Value = "--"
'Sinon dans une boucle
Dim i As Long
For i = 1 To 10
   If Range("A" & CStr(i)).Value = "prt" Then Range("K" & CStr(i)).Value = "--"
Next

'pour la couleur
If Range("B1").Interior.ColorIndex = 4 Then Range("D1").Interior.ColorIndex = 4
'il y a plusieur orange 45 en est un
If Range("B2").Interior.ColorIndex = 45 Then Range("D2").Interior.ColorIndex = 45, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Merci pour cett réponse rapide...


Dans mon fichier excel, j'utilise déjà une macro qui fonctionne mais qui est peut-être compliqué....
Et moi j'aimerais rajouter la couleur dans la colonne D et pas seulement la B.
Et si dans la colonne A je trouve "prt" alors mettre "--" dans K (mais pas seulement ligne 1 ou 2 mais faire le controle dans toute la page....)

Un grand merci


Private Sub Worksheet_Change(ByVal Target As Range)
 
  Application.ScreenUpdating = False 'Pour désactiver la mise à jour de l'affichage
 
  For Each c In Worksheets(1).Range("b1:b500")
  
    If c.Value = "prt" Then
        c.Interior.ColorIndex = 4
        c.Font.ColorIndex = 0
    End If
    If c.Value = "unit" Then
        c.Interior.ColorIndex = 6
        c.Font.ColorIndex = 0
    End If
    If c.Value = "ms" Then
        c.Interior.ColorIndex = 50
        c.Font.ColorIndex = 0
    End If
    If c.Value = "os" Then
        c.Interior.ColorIndex = 38
        c.Font.ColorIndex = 0
    End If
    If c.Value = "ps" Then
        c.Interior.ColorIndex = 8
        c.Font.ColorIndex = 0
    End If
    If c.Value = "es" Then
        c.Interior.ColorIndex = 45
        c.Font.ColorIndex = 0
    End If
    If c.Value = "obj" Then
        c.Interior.ColorIndex = 48
        c.Font.ColorIndex = 0
    End If
    If c.Value = "" Then
        c.Interior.ColorIndex = 0
        c.Font.ColorIndex = 0
        c.Font.Bold = False
    End If
  




Next c
Application.ScreenUpdating = True
End Sub
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
As tu essayé le code proposé au moins?

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

Si la réponse vous convient: Réponse acceptée < body>
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Oui mais je connais vraiment pas grand chose donc je ne sais pas trop ou le mettre... puisque j'ai déjà une macro...dsl
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Oui mais je connais vraiment pas grand chose donc je ne sais pas trop ou le mettre... puisque j'ai déjà une macro...dsl
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Alors déjà dans la macro existantes utilise des elseif ou encore mieux le select case.

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

Si la réponse vous convient: Réponse acceptée < body>
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
J'espere ne pas avoir tapé trop à coté.

Private Sub Worksheet_Change(ByVal Target As Range)

   Dim MColor As Integer
   Application.ScreenUpdating = False 'Pour désactiver la mise à jour de l'affichage
   
   For Each c In Worksheets(1).Range("b1:b500")
       Select Case c.Value
           Case "prt": MColor = 4
                       Range("K" & c.Row).Value = "--"
           Case "unit": MColor = 6
           Case "ms": MColor = 50
           Case "os": MColor = 38
           Case "ps": MColor = 8
           Case "es": MColor = 45
           Case "obj": MColor = 48
           Case vbNullString: MColor = 0
       End Select
       
       c.Interior.ColorIndex = MColor
       c.Font.ColorIndex = 0       If MColor 0 Then c.Font.Bold False       If MColor 4 Or MColor 45 Then Range("D" & c.Row).Interior.ColorIndex = MColor
   Next c
   Application.ScreenUpdating = True
   

End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Un grand merci
Voius avez réussi à cerner mon problème très rapidement...
Juste un prob j'ai l'impression que la macro tourne en boucle...
C'est peut-être mon fichier excel car j'ai des cellule fussionner et trucs dans le genre...
Comment puis-je vous faire voir mon fichier excel???
Je ne sais pas comment vous remecier
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Et bien réactive la mise à jour de l'écran.

Application.ScreenUpdating = True

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

Si la réponse vous convient: Réponse acceptée < body>
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
NE désactive pas le ScreenUpdating si tu veux faire du pas à pas efficace.

qu'entends exactement par "tourne en boucle"

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

J'ai exactement mis votre macro qui rempli mes cellules correctement mais la macro tourne toujours et je ne peux plus utiliser excel ....
Puis-je vous envoyer mon fichier xls.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Si tu veux
epsylon9@gmail.com

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

C'est envoyé....
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

C'est envoyé....
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
REcu,
Petite question elle doit se lancer quand exactement cette fameuse macro?
Car la elle à pas l'air de se lancer.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Quand la feuille subit un changement à première vu!

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

Si la réponse vous convient: Réponse acceptée < body>