Macro excel

Résolu
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,
Bah alors c'est normal que tu crois que la macro de s'arrete pas.
En fait elle s'execute à chaque changement dans la feuille. hors ta macro effectue des changements dans la feuille qui rappelle la même macro, et ainsi de suite.

Donc il faut que tu spécifie peu être mieux le moment où tu souhaite qu'elle sexecute ou alors faire une truc du genre.

Private Sub Worksheet_Change(ByVal Target As Range)
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 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

Ok mais avec la dernière version, elle ne se lance plus... que faut-il faire pour qu'elle se lance
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Ok mais avec la dernière version, elle ne se lance plus... que faut-il faire pour qu'elle se lance
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

pardon ca marche
Quel bonheur
Un grand merci
Ca ferait du bien d'avoir votre savoir.... et encore merci pour la réponse aussi rapide...
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Je me suis réjouis trop vite... en faite, je ne sais pas quand est-ce qu'elle se lance???
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

est-ce possible de mettre un icone pour la lancé?
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Je reviens à ta question initiale dans laquelle tu écris:
Et je ne peux pas utiliser de fomules car je fais des copier coller donc macro obilgatoire...

Je ne vois pas où est le problème de faire des copier-coller avec des formules si tu colles en Valeur (???)

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

Oui vous avezu certainement raison... je vais essayer.
Comment dois-je faire pour lancer la macro???? Avec un icône??
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Pourquoi ne pas ajouter un bouton qur ta feuille excel?
Ca t'irais?

Et ensuite tu place tout le code qui était dans _Change dans l'événement ClicK.

En fait je me suis rendu compte que la macro d'hier ne s'executait qu'UNE seule fois avec mon booleen.

Donc ajoute un bouton dans la feuille et copie colle ce code.

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 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
   '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
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Ok l'idée me plait
Donc j'ajoute un bouton dans une barre d'outils mais ensuite comment dois-je faire pour lui mettre le code???
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Et bien faut tout te mâcher à toi. Tu sais il faudrait essayer un peu par toi même de découvrir les fonctionnalités proposées par Excel. Jusqu'à présent on t'a tout de même bien faliciter le travail. Essaie de voir la suite tout seul.

Tu ajoutes un bouton dans UNE FEUILLE puis tu doubles click dessus ca va t'ouvrir l'éditeur VBA et ensuite copie colle.

@+: 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

Tout marche à merveille... vous avez rendu quelqu'un heureux un grand merci et je vais essayer de comprendre comment ca marche....
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Dernière chose.
Si tu estimes que ton problème de départ est résolu ("Tout marche à merveille"), alors penses à appuyer sur le bouton réponse acceptée sur le ou les post qui ont pu t'aider à avancer.

(ensuite si tu rencontres d'autres problèmes rien ne t'empêcheras de poser une nouvelle question dans un topic tout neuf.)

@+: 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

Je viens de la soumettre à une séance de torture.... elle fonctionne à merveille.... juste un petit bug....
si sur une ligne je mets "prt", elle va mettre la couleur correspondante....
si la ligne en dessous j'écris "salut", elle prendra la couleur de la ligne précédente....
mais si je mets un code "prt" "ms" "os" ... comme dans la macro, pas de soucis mais une faute de frappe, reprend la couleur de la ligne avant....
bizarre, non? en tout cas pour moi....lol
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Que dire à part parfait et un grand merci
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Alors pense a ce que je t'ai dit et appuie sur le bouton réponse acceptée sur le ou LES posts qui ont pu t'aider.
MERCI

@+: 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

Encore moi.... Je pensais pouvoir résoudre un petit prob seul mais je crois que je ne connais pas encore assez de chose...


Si je veux dans la colonne G que le texte "p" soit remplacé par "divers"¨


Que dois-je rajouter à la macro???


Voici ce que j'ai essayé sans succès:


Private Sub COULEUR_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 = "Alphacos"
           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 6 Or MColor = 50 Or MColor = 38 Or MColor = 8 Or MColor = 45 Or MColor = 48 Or MColor = 0 Then Range("D" & c.Row).Interior.ColorIndex = MColor
   Next c
 
 
  For Each c In Worksheets(1).Range("G1:G500")
       Select Case c.Value
           Case "p": Value = "Divers"
       End Select
          
          
   Next c
  
   Application.ScreenUpdating = True
   'petite ligne a rajouter si on veut le faire
   'plus d'une fois
   EnCours = False


End Sub
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
'Si tu veux juste remplacer dans le cas ou il a "p"

'fais ceci

For Each c In Worksheets(1).Range("G1:G500")   If c.Value "p" Then c.Value "Divers"
Next c
,

----

Ju£i?n</italique>


Pensez: Réponse acceptée
Messages postés
28
Date d'inscription
lundi 4 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Génial ca marche... décidement quand on connait on peut faire ce qu'on veut.... je vous envie un peu....
avec la macro peux-tu lui dire de mettre une couleur au texte que la macro va écrire?
Genre que le texte Alphacos soit rouge...?
Et est-ce possible de "verrouiller" certaine cellule? c-a-d que meme si il y a "prt" en B72 (ex), de ne pas forcément mettre alphacos en K72, car K72 est "verrouiller"...
Ou alors est-ce que la ca devient trop difficile...

Private Sub COULEUR_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 = " Alphacos "
           Case "unit": MColor = 6
                      Range("K" & c.Row).Value = " Alphacos "
           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 6 Or MColor = 50 Or MColor = 38 Or MColor = 8 Or MColor = 45 Or MColor = 48 Or MColor = 0 Then Range("D" & c.Row).Interior.ColorIndex = MColor
   Next c
 
  For Each c In Worksheets(1).Range("G1:G500")   If c.Value "Material <not specified>" Then c.Value "Divers"
Next c


  
   Application.ScreenUpdating = True
   'petite ligne a rajouter si on veut le faire
   'plus d'une fois
   EnCours = False


End Sub
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Essaies Voir de le Faire tout seul.En anglais police FONT donc a ton avis la ligne c.Font.ColorIndex 0 qu'est ce qu'elle fait pourquoi la tu mise....
Il faut être logique un peu. Tu recommence à essayer de faire en sorte que l'on te mâche tout. et ca devient lassant. Ce n'est pas le fait de le savoir, mais si tu ne cherches pas un minimum comment tu veux t'améliorer. Regarde l'outil que te propose EXCEL et qui s'appelle enregistreur de Macro.
la couleur de la police est c.Font.Color <gras>VbRed ou alors c.Font.ColorIndex 4</gras>

De meme pour le Verouillage (qui soit dit en passant n'aura de l'effet que si la feuille est protégée) se dit Lock en anglais.

Donc en regardant un minimum
if c.locked = True then msgbox "cellule protégée"

@+: Ju£i?n
Pensez: Réponse acceptée