Table et recopie

Guy55

XLDnaute Junior
Bonjour a tout le monde,
Pour avancer dans mon projet, j'aurais besoin de votre aide sur les conditions dans la macro suivante.
J'aimerais vérifier pour chaque ligne d'une table, si date du jour (aujourd'hui) > de 20 jours a la date colonne de la colonne 13 et dans la colonne 20 il y a la lettre "C", "N" ou "A" et dans la colonne 21 si elle est coloriée en vert ou en rouge
3 Conditions :
si date aujourd'hui = date colonne 13 + 20 jours ET
si colonne 20 ="C" ET
si colonne 21 = rouge
ALORS :

recopier la ligne correspondante dans l'onglet "Certification" (3ème feuille) a partir de la cellule A2 et colorier en vert la colonne 14 de la ligne correspondante.
La macro serait lancée à l'aide d'un bouton virtuel pour gérer les conditions.

J'ai attaché le fichier exemple.
D'avance un beau merci a tout le monde.
 

Pièces jointes

  • GénérercouleurV2.xlsm
    21.3 KB · Affichages: 24
  • GénérercouleurV2.xlsm
    21.3 KB · Affichages: 24
  • GénérercouleurV2.xlsm
    21.3 KB · Affichages: 25

vgendron

XLDnaute Barbatruc
Re : Table et recopie

Bonjour,

Je n'ai pas tout saisi. et je ne vois pas trop ton probème. vu que dans ta macro export. tu sembles déjà avoir tous les éléments

si date aujourd'hui = date colonne 13 + 20 jours ET
si colonne 20 ="C" ET
si colonne 21 = rouge

if (Date= .cells(i,13)+20) and (.cells(i,20)="C") and (.cells(i,21).interior.colorindex=3) then
.....
 

Guy55

XLDnaute Junior
Re : Table et recopie

Bonjour tout le monde,
Merci vgendron.
Voila mon avancement, j'ai donc créeé 2 boucles FOR NEXT. Le programme me dit qu'il manque un NEXT.
Je ne sais pas non plus comment reposter mon fichier excell avec les modif que je viens de faire.
Merci

Hasco,
Je suis désolé, sans doute trop d'empressement croyant n'avoir pas été assez clair.

Guy55


Sub Export()
'Déclaration des worksheets
Dim i&, F As Worksheet, G As Worksheet
Set F = Sheets("recupération")
Set G = Sheets("certification")
'Boucle qui teste la date et fait la recopie dans l'onglet récupération
With Sheets("table1")
For i = 3 To .Cells(.Rows.Count, 3).End(3).Row
'If .Cells(i, 3) = Date Then
If .Cells(i, 3) <= Date And .Cells(i, 19).Value <> "Env" Then
Application.Union(.Cells(i, 3), .Cells(i, 6), .Cells(i, 7), .Cells(i, 9)).Copy _
F.Cells(Application.WorksheetFunction.Max(F.Cells(F.Rows.Count, 1).End(3)(2).Row, 3), 1)
With .Cells(i, 19)
.Value = "Env"
.Interior.ThemeColor = xlThemeColorAccent3
.Interior.TintAndShade = -0.249946592608417
End With
'Boucle qui teste la date et fait la recopie dans l'onglet certification
If (Date = .Cells(i, 13) + 20) And (.Cells(i, 20) = "C") And (.Cells(i, 21).Interior.ColorIndex = 3) Then
Application.Union(.Cells(i, 3), .Cells(i, 6), .Cells(i, 7), .Cells(i, 20), .Cells(i, 21)).Copy _
G.Cells(Application.WorksheetFunction.Max(G.Cells(G.Rows.Count, 1).End(3)(2).Row, 3), 1)
With .Cells(i, 19)
.Value = "Payé"
.Interior.ThemeColor = xlThemeColorAccent3
.Interior.TintAndShade = -0.249946592608417
End With
End If
Next i
End With
End Sub
 

Guy55

XLDnaute Junior
Re : Table et recopie

Merci vgendron
Voici le fichier associé a mon dernier post.

Merci à tout le monde
 

Pièces jointes

  • GénérercouleurV3.xlsm
    21.1 KB · Affichages: 22
  • GénérercouleurV3.xlsm
    21.1 KB · Affichages: 22
  • GénérercouleurV3.xlsm
    21.1 KB · Affichages: 24

vgendron

XLDnaute Barbatruc
Re : Table et recopie

Dans ta version 3, il y a deux fois Next i
et une erreur de syntaxe (sur deux lignes) pour la copie des données dans le range G

Code:
Sub Export()
'Déclaration des worksheets
Dim i&, F As Worksheet, G As Worksheet
Set F = Sheets("recupération")
Set G = Sheets("certification")
'Boucle qui teste la date et fait la recopie dans l'onglet récupération
With Sheets("table1")
     For i = 3 To .Cells(.Rows.Count, 3).End(3).Row
         'If .Cells(i, 3) = Date Then
         If .Cells(i, 3) <= Date And .Cells(i, 19).Value <> "Env" Then
             Application.Union(.Cells(i, 3), .Cells(i, 6), .Cells(i, 7), .Cells(i, 9)).Copy _
             F.Cells(Application.WorksheetFunction.Max(F.Cells(F.Rows.Count, 1).End(3)(2).Row, 3), 1)
             With .Cells(i, 19)
                 .Value = "Env"
                 .Interior.ThemeColor = xlThemeColorAccent3
                 .Interior.TintAndShade = -0.249946592608417
             End With
        
 'Boucle qui teste la date et fait la recopie dans l'onglet certification
            If (Date = .Cells(i, 13) + 20) And (.Cells(i, 20) = "C") And (.Cells(i, 21).Interior.ColorIndex = 3) Then
                Application.Union(.Cells(i, 3), .Cells(i, 6), .Cells(i, 7), .Cells(i, 20), .Cells(i, 21)).Copy _
                G.Cells(Application.WorksheetFunction.Max(G.Cells(G.Rows.Count, 1).End(3)(2).Row, 3), 1)
                With .Cells(i, 21)
                    .Value = "Payé"
                    .Interior.ThemeColor = xlThemeColorAccent3
                    .Interior.TintAndShade = -0.249946592608417
                End With
            End If
        End If
      
      Next i
End With
End Sub
 

Guy55

XLDnaute Junior
Re : Table et recopie

Bonjour,
J'ai enlevé le 2 ème next i.
Au départ, la première boucle fonctionnait bien avec recopie dans worksheet récupération.
J'ai intégré la formule de test if (Date= .cells(i,13)+20) and (.cells(i,20)="C") and (.cells(i,21).interior.colorindex=3) then et recopié le reste en prenant soin de changer la déclaration de la worksheet par G ( certification).
Est-ce une erreur de parenthèse (syntaxe) ou ce serait mieux de séparer les deux boucles For - Next.

Merci beaucoup
Guy55
 

Guy55

XLDnaute Junior
Re : Table et recopie

Bonsoir tout le monde du forum,

Dans la macro, je n'arrive pas à trouver ou est l'erreur de syntaxe dans les lignes des onglets G "certification" et aussi pourquoi j'ai une erreur sur la boucle For - Next i.

En fonction de cela, j'aimerais intégrer le test sur couleur rouge que Si m'a proposé.

Merci à tout le monde
 

Pièces jointes

  • GénérercouleurV3.xlsm
    21.2 KB · Affichages: 20
  • GénérercouleurV3.xlsm
    21.2 KB · Affichages: 23
  • GénérercouleurV3.xlsm
    21.2 KB · Affichages: 22

vgendron

XLDnaute Barbatruc
Re : Table et recopie

Bonjour le forum,
il te manque un end if..
juste avant la ligne de commentaire (enfin.. je pense que c'est la qu'il faut la mettre)
end if
'Boucle qui teste la date et fait la recopie dans l'onglet certification


PS: l'intérêt de l'indentation ( décalage des blocs de code) c'est justement pour identifier ces fin de boucles / conditions manquantes

bon et puis. il faut aussi apprendre à utiliser le mode pas à pas (touche F8) pour débugger ta macro..
set G=sheets("certification")
ca ne marche pas car le nom de ta feuille n'est pas correct:
il faut écrire
set G=sheets("Certification") avec la majuscule

erreur suivante (on a pas encore commencé les tests "with...."
F as Worksheet, G as Woksheets..

etc etc...
 
Dernière édition:

Guy55

XLDnaute Junior
Re : Table et recopie

Bonjour le forum,
Merci vgendron
J'ai corrigé la déclaration de la deuxième feuille et aussi le problème des boucles.
Malgré tout, je n'arrive pas a colorier et surtout faire la recopie sur cette deuxième feuille.
J'attache le fichier pour une meilleure compréhension.
Si quelqu'un pouvait m'aider.

Comme toujours, vous m'êtes d'un grand support.
 

Pièces jointes

  • GénérercouleurV3.xlsm
    23.7 KB · Affichages: 19
  • GénérercouleurV3.xlsm
    23.7 KB · Affichages: 20
  • GénérercouleurV3.xlsm
    23.7 KB · Affichages: 21

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz