Pour la Mise en Forme Conditionnelle
https://support.office.com/fr-fr/art...b-f1951ff89d7f
Par contre, tu devrais réellement passer du temps à te documenter sur Excel et VBA avant d'aller plus loin. Tu gagneras du temps.
Je viens de regarder pour la mise en forme mais je ne pense pas que c'est ce que je cherche.
Ici en 1er j'avais fait ma condition pour :
Si "La date du jour" > = "A ma colonne D, ma date Limite" ET "Date Limite" n'est pas colorié alors je fais ma condition.
MAis je ne trouve pas comment lui dire ce n'est pas colorié qu'elle valeur.
Re bonsoir,
Je reviens ici car je viens de faire un code, qui n'est peut etre pas claire mais que je comprend.
Donc j'ai fait en sorte que si La date du jour >= La date limite (colonne D) Alors il me copie et colle la ligne dans l'autre feuille
sauf qu'il ne fait pas ce que je lui dit, bien evidemment, il me recopie les 3 premières lignes et saute la ligne 9. Qui peut me dire mon erreur?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 'Sub est le debut de la procedure Sub Rappel() 'Dim est une variable Dim Nom, numero_ligne, DateEnvoi, NomLot, Total, Rappel Dim Onglet As Worksheet Dim DateJour, DateLimite Dim Cible, Cpt 'DateJour = A la date du systeme DateJour = Date Couleur = ActiveCell.Font.Color nb_lignes = WorksheetFunction.CountA(Range("A:A")) - 2 'Fonction NBVAL Cible = "Feuil1" Cpt = 6 Nom = Range("A1").Value 'For Each Onglet In Worksheets While Cpt <= 12 DateLimite = Range("D" & Cpt).Value numero_ligne = Range("F5") + Cpt DateEnvoi = Format(Cells(numero_ligne, 1), "dd/mm") NomLot = Cells(numero_ligne, 2) Total = Cells(numero_ligne, 3) Rappel = Format(Cells(numero_ligne, 4), "dd/mm") If DateJour >= DateLimite Then Range("A1").Copy Worksheets(Cible).Range("A" & Cpt) Cells(numero_ligne, 1).Copy Worksheets(Cible).Range("B" & Cpt) Cells(numero_ligne, 2).Copy Worksheets(Cible).Range("C" & Cpt) Cells(numero_ligne, 3).Copy Worksheets(Cible).Range("D" & Cpt) Cells(numero_ligne, 4).Copy Worksheets(Cible).Range("E" & Cpt) Cpt = Cpt + 1 Else Cpt = Cpt + 1 End If Wend 'Next End Sub
Bonjour,
Comme on te l'a fortement conseillé dans un post plus haut, type tes variables mais avant tout, fais en sorte qu'elles soient déclarées de façon explicite en cochant la case "Déclaration des variables obligatoire" dans le menu "Outils" --> "Option..." onglet "Éditeur". A l'ouverture des classeurs par la suite, il sera inscrit "Option Explicit" en tête des tous les modules quel que soit leur type et ceci pour t'éviter de t'arracher les cheveux dans bien des cas lors de débogages !
Tu affectes des valeurs à des variables dans ta boucle mais tu ne les utilises pas, pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim DateJour As Date Dim DateLimite As Date Dim DateEnvoi As Date Dim Nom As String Dim NomLot As String Dim Rappel As String Dim Cible As String Dim Total As Double Dim Cpt As Long Dim Couleur As Long Dim nb_lignes As Long Dim numero_ligne As Long
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DateLimite = Range("D" & Cpt).Value numero_ligne = Range("F5") + Cpt DateEnvoi = Format(Cells(numero_ligne, 1), "dd/mm") NomLot = Cells(numero_ligne, 2) Total = Cells(numero_ligne, 3) Rappel = Format(Cells(numero_ligne, 4), "dd/mm")
Bonjour,
J'ai voulu les utiliser mais je n'ai pas réussi, j'ai voulu faire
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part Range(NomLot).Copy
Bonsoir,
Comment dire si ma cellule est surligné? Je ne peux pas dire
If couleur = True
Merci
Bonjour,
Un petit test sur la cellule A1, en modifiant la couleur de fond tu auras des messages différents selon le cas :
Si l'intérieur de A1 est rouge, le message sera "Ok, c'est la bonne couleur !", si A1 est colorée avec une autre couleur que rouge, le message sera "La cellule est colorée mais ce n'est pas la bonne couleur !" et si A1 ne contient aucune couleur, le message sera "La cellule n'est pas colorée !"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub Test() Dim Couleur As Long 'couleur rouge Couleur = RGB(255, 0, 0) 'test sur cellule A1 If Cells(1, 1).Interior.Color = Couleur Then MsgBox "Ok, c'est la bonne couleur !" ElseIf Cells(1, 1).Interior.Color <> 16777215 Then MsgBox "La cellule est colorée mais ce n'est pas la bonne couleur !" Else MsgBox "La cellule n'est pas colorée !" End If End Sub
Si tu veux savoir la valeur de la couleur (en Long) d'une cellule, tu peux faire :
le résultat sera inscrit dans la fenêtre d'exécution (Ctrl+G) ou tu peut le faire directement dans cette fenêtre en faisant précéder l'instruction d'un point d'interrogation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Sub QuelleCouleur() Debug.Print ActiveCell.Interior.Color End Sub
?activecell.Interior.Color
que tu valide par la touche Entrée !
Merci, ici je ne sais pas qu'elle sera la couleur justement mais j'ai fait l'inverse si la case n'est pas colorié.
Il ne me reste plus grand chose a testé, si tu sais m'aider.
1) Dans mon tableau, en A1 j'ai utilisé une formule trouvé sur le net pour qu'il récupère le nom mis dans mon onglet, seulement quand je recopie dans l'autre feuille, ben il me fait la même chose et ne m'indique pas le nom copié. Comment garder le nom et pas la formule?
2) Dans ma condition, quand il lit une ligne qui ne doit pas être recopié, dans ma feuille de récap il saute une ligne.
J'espère que je me suis bien exprimé. Merci
Bonjour Theze,
Color ne permet pas de détecter la différence entre une cellule colorée en blanc et une cellule non colorée, il faut utiliser ColorIndex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub Test() Dim Couleur As Long 'couleur rouge Couleur = RGB(255, 0, 0) 'test sur cellule A1 If Cells(1, 1).Interior.Color = Couleur Then MsgBox "Ok, c'est la bonne couleur !" ElseIf Cells(1, 1).Interior.ColorIndex <> xlNone Then MsgBox "La cellule est colorée mais ce n'est pas la bonne couleur !" Else MsgBox "La cellule n'est pas colorée !" End If End Sub
Bonjour,
Et comme j'ai fait moi ca va, ne sachant pas la couleur j'ai inversé et dit si ma couleur est différent de rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Couleur = Range("D" & Cpt).Interior.Color If DateJour >= DateLimite And Couleur = 16777215 Then
Ça c'est : si aucune couleur ou couleur blanche.
Pour tester couleur différente de rien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Range("D" & Cpt).Interior.ColorIndex <> xlNone then
Partager