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
A voir également:
- Déterminer la couleur de la cellule de la col
- La boite a couleur - Télécharger - Divers Photo & Graphisme
- Excel cellule couleur si condition texte - Guide
- Changer la couleur de la barre des taches - Guide
- Excel somme si couleur cellule - Guide
- Aller à la ligne dans une cellule excel - Guide
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
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
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
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 :
Bon courage
;o)
polux
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)
Autre manière, plus claire :
A suivre...
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...
ç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
>
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
>
> Donc j'ai modifié en conséquence ma boucle mais je n'ai toujours pas de
> résultat qui s'affiche dans la cellule concernée !!!!