Déterminer la couleur de la cellule de la col
Jeanne
-
Jeanne -
Jeanne -
Bonjour,
Je souhaite déterminer la couleur de la cellule de la colonne C et selon celle-ci y insérer un message.
Mon code ne présente paw de messages d'erreur mais ne me communique aucun résultat.
Et je ne comprend pas pourquoi !
QQ un peut-il m'aider ?
D'avance merci.
Jeanne
Sub allocation_type_contrats()
Dim NbreLignes As Integer
Dim Ligne As Integer
Dim Nom_Onglet As String
'récupération de l'onglet
Nom_Onglet = "LISTE FOURNISSEURS 31 08 07"
Sheets(Nom_Onglet).Select
'Boucle qui détermine la couleur de l'onglet et selon celui-ci, insère un ctaire dans la cellule
NbreLignes = ActiveSheet.Range("C1").CurrentRegion.Rows.Count
For Ligne = 1 To NbreLignes
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 6 Then
ActiveSheet.Cells("C" & Ligne) = "CONTRAT OK"
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 20 Then
ActiveSheet.Cells("C" & Ligne) = "FOURNISSEUR PONCTUEL"
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 3 Then
ActiveSheet.Cells("C" & Ligne) = "NON PRESTATAIRE"
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 7 Then
ActiveSheet.Cells("C" & Ligne) = "DOC A COMPLETER"
End If
End If
End If
End If
Next
End Sub
Je souhaite déterminer la couleur de la cellule de la colonne C et selon celle-ci y insérer un message.
Mon code ne présente paw de messages d'erreur mais ne me communique aucun résultat.
Et je ne comprend pas pourquoi !
QQ un peut-il m'aider ?
D'avance merci.
Jeanne
Sub allocation_type_contrats()
Dim NbreLignes As Integer
Dim Ligne As Integer
Dim Nom_Onglet As String
'récupération de l'onglet
Nom_Onglet = "LISTE FOURNISSEURS 31 08 07"
Sheets(Nom_Onglet).Select
'Boucle qui détermine la couleur de l'onglet et selon celui-ci, insère un ctaire dans la cellule
NbreLignes = ActiveSheet.Range("C1").CurrentRegion.Rows.Count
For Ligne = 1 To NbreLignes
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 6 Then
ActiveSheet.Cells("C" & Ligne) = "CONTRAT OK"
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 20 Then
ActiveSheet.Cells("C" & Ligne) = "FOURNISSEUR PONCTUEL"
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 3 Then
ActiveSheet.Cells("C" & Ligne) = "NON PRESTATAIRE"
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 7 Then
ActiveSheet.Cells("C" & Ligne) = "DOC A COMPLETER"
End If
End If
End If
End If
Next
End Sub
Configuration: Windows XP Internet Explorer 6.0
4 réponses
-
-
Et comme sa ?
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 6
Then ActiveSheet.Cells("C" & Ligne) = "CONTRAT OK"
Else
{
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 20
Then ActiveSheet.Cells("C" & Ligne) = "FOURNISSEUR PONCTUEL"
Else
{
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 3
Then ActiveSheet.Cells("C" & Ligne) = "NON PRESTATAIRE"
Else
{
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 7
Then ActiveSheet.Cells("C" & Ligne) = "DOC A COMPLETER"
End If
}End If
}End If
}End If-
Hélas j'ai une erreur de syntaxe qui dit :Erreur de compilation Erreur de syntaxe sur le premier If
Je suis un peu perdue....
Sub allocation_type_contrats()
Dim NbreLignes As Integer
Dim Ligne As Integer
Dim Nom_Onglet As String
'récupération de l'onglet
Nom_Onglet = "LISTE FOURNISSEURS 31 08 07"
Sheets(Nom_Onglet).Select
'Boucle qui détermine la couleur de l'onglet et selon celui-ci, insère un ctaire dans la cellule
NbreLignes = ActiveSheet.Range("C1").CurrentRegion.Rows.Count
For Ligne = 1 To NbreLignes
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 6
Then ActiveSheet.Cells("C" & Ligne) = "CONTRAT OK"
Else
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 20
ActiveSheet.Cells("C" & Ligne) = "FOURNISSEUR PONCTUEL"
Else
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 3
Then ActiveSheet.Cells("C" & Ligne) = "NON PRESTATAIRE"
Else
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 7
Then ActiveSheet.Cells("C" & Ligne) = "DOC A COMPLETER"
End If
End If
End If
End If
End Sub- Revoici mon code, toujours sans résultat....
Sub allocation_type_contrats()
Dim NbreLignes As Integer
Dim Ligne As Integer
Dim Nom_Onglet As String
'récupération de l'onglet
Nom_Onglet = "LISTE FOURNISSEURS 31 08 07"
Sheets(Nom_Onglet).Select
'Boucle qui détermine la couleur de l'onglet et selon celui-ci, insère un ctaire dans la cellule
NbreLignes = ActiveSheet.Range("C1").CurrentRegion.Rows.Count
For Ligne = 1 To NbreLignes
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 6 Then
ActiveSheet.Cells("C" & Ligne) = "CONTRAT OK"
Else
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 20 Then
ActiveSheet.Cells("C" & Ligne) = "FOURNISSEUR PONCTUEL"
Else
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 3 Then
ActiveSheet.Cells("C" & Ligne) = "NON PRESTATAIRE"
Else
If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 7 Then
ActiveSheet.Cells("C" & Ligne) = "DOC A COMPLETER"
End If
End If
End If
End If
Next
End Sub
-
-
Essaye de voir si il manque pas des "if" des "then" ou des "else" comme ici : http://www.commentcamarche.net/forum/affich 3081463 vba fonction if need help je ne connais pas plus le VBA. Désolé.
-
- Bonjour,
Essaies ça :Sub allocation_type_contrats() Dim NbreLignes As Integer Dim Ligne As Integer Dim ws As Worksheet ' Set ws = Worksheets("LISTE FOURNISSEURS 31 08 07") With ws NbreLignes = .Range("C1").CurrentRegion.Rows.Count For Ligne = 1 To NbreLignes If .Range("C" & Ligne).Interior.ColorIndex = 6 Then .Range("C" & Ligne).Value = "CONTRAT OK" End If If .Range("C" & Ligne).Interior.ColorIndex = 8 Then .Range("C" & Ligne).Value = "FOURNISSEUR PONCTUEL" End If If .Range("C" & Ligne).Interior.ColorIndex = 3 Then .Range("C" & Ligne).Value = "NON PRESTATAIRE" End If If .Range("C" & Ligne).Interior.ColorIndex = 7 Then .Range("C" & Ligne).Value = "DOC A COMPLETER" End If Next End With End Sub
Bon courage
;o)
polux
-
-
Salut Jeanne,
tu emploies mal les If... ElseIf...EndIf. Du coup, seule la première condition est testée.
(de plus, attention, tu emploies Cells incorrectement, remplace par Range)If ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 6 Then ActiveSheet.Range("C" & Ligne) = "CONTRAT OK" ElseIf ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 20 Then ActiveSheet.Range("C" & Ligne) = "FOURNISSEUR PONCTUEL" ElseIf ActiveSheet.Range("C" & Ligne).Interior.ColorIndex = 3 Then ActiveSheet.Range("C" & Ligne) = "NON PRESTATAIRE" End If
Autre manière, plus claire :For ligne = 1 To NbreLignes With ActiveSheet.Range("C" & ligne) Select Case .Interior.ColorIndex Case Is = 6 .Value = "CONTRAT OK" Case Is = 20 .Value = "FOURNISSEUR PONCTUEL" Case Is = 3 .Value = "NON PRESTATAIRE" End Select End With Next ligne
A suivre...-
Merci encore pour toutes ces réponses !
Je teste le code dès que j'ai terminé ce sur quoi je travaille.
Ah, quelle belle communauté que celle des VBAistes...;
Jeanne- ça y est : j'ai eu la solution d'une programmeuse patentée, future contrôleuse de gestion (elle est trop forte cette Sandrine !!!)
Je vous la communique et remercie tous ceux qui ont contribué à l'élaboration de ce code.
Sub allocation_type_contrats1()
>
>
>
> Dim NbreLignes As Integer
> Dim Ligne As Integer
>
> 'on part de la dernière ligne excel, et on remonte jusqu'à trouver une cellule ou quelque chose est écrit... ce sera ta dernière ligne
> NbreLignes = ActiveSheet.Range("B65536").End(xlUp).Row
>
> 'cela veut dire que si VB trouve une erreur, il passera à la ligne suivante
> 'je suis obligée de mettre ca (qui n'est pas génial)
> 'car la ligne .addcomment bloque si la cellule a déjà un commentaire
> On Error Resume Next
>
> 'boucle de la ligne 1 à la dernière
> For Ligne = 1 To NbreLignes
> 'selon la couleur de la cellule
> Select Case ActiveSheet.Range("C" & Ligne).Interior.ColorIndex
> 'si c'est jaune
> Case 6
> 'je rajoute un commentaire à la cellule
> Range("D" & Ligne).AddComment
> 'saisie du texte du commentaire
> Range("D" & Ligne).Comment.Text Text:="CONTRAT OK"
> Case 20
> Range("D" & Ligne).AddComment
> Range("D" & Ligne).Comment.Text Text:="FOURNISSEUR PONCTUEL"
> Case 3
> Range("D" & Ligne).AddComment
> Range("D" & Ligne).Comment.Text Text:="NON PRESTATAIRE"
> End Select
> Next Ligne
>
> End Sub
>
-