pascal7376
Messages postés28Date d'inscriptionlundi 4 juin 2007StatutMembreDernière intervention 6 juin 2007
-
4 juin 2007 à 15:24
pascal7376
Messages postés28Date d'inscriptionlundi 4 juin 2007StatutMembreDerniè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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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]
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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]
pascal7376
Messages postés28Date d'inscriptionlundi 4 juin 2007StatutMembreDerniè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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
pascal7376
Messages postés28Date d'inscriptionlundi 4 juin 2007StatutMembreDerniè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
pascal7376
Messages postés28Date d'inscriptionlundi 4 juin 2007StatutMembreDerniè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.