Macro excel

Résolu
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007 - 4 juin 2007 à 15:24
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007 - 6 juin 2007 à 07:29
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

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 juin 2007 à 09:07
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
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 juin 2007 à 14:41
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
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 juin 2007 à 16:26
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
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 juin 2007 à 17:19
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
3

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

Posez votre question
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 juin 2007 à 15:35
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
0
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007
4 juin 2007 à 16:02
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
0
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
4 juin 2007 à 16:12
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>
0
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007
4 juin 2007 à 16:18
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
0
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007
4 juin 2007 à 16:18
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
0
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
4 juin 2007 à 16:20
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>
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 juin 2007 à 16:22
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
0
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007
4 juin 2007 à 16:36
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
0
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
4 juin 2007 à 16:39
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>
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 juin 2007 à 16:39
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
0
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007
4 juin 2007 à 16:44
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.
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 juin 2007 à 16:46
Si tu veux
epsylon9@gmail.com

@+: Ju£i?n
Pensez: Réponse acceptée
0
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007
4 juin 2007 à 16:52
C'est envoyé....
0
pascal7376 Messages postés 28 Date d'inscription lundi 4 juin 2007 Statut Membre Dernière intervention 6 juin 2007
4 juin 2007 à 16:52
C'est envoyé....
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 juin 2007 à 16:54
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
0
drikce06 Messages postés 2237 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 11
4 juin 2007 à 16:56
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>
0