Aide pour complement de code

Résolu
Signaler
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
-
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
-
Bonjour
j'ai un tableau de U3 a Y67,dans U3 a U67, j'ai des valeurs 7101 7102 etc
je souhaiterais si les cellules W3 - X3 = 1 semaine mettre la cellules U3 de couleur 65535.
si W3 - X3 = 2 semaines cel U3= col 10092390
si W3 - X3 = 3 semaines cel U3= col 16777062
si W3 - X3 = 4 semaines cel U3= col 12497879

a integrer dans mon code ci dessous:

Private Sub CommandButton2_Click()
Dim DerLigS As Long
Dim MaRech As Range, CelFin As Range
Application.ScreenUpdating = False
 
If Me.Numero.Value <> "" Then
    With Sheets("AR-Base")
        DerLigS = .Cells(.Rows.Count, 21).End(xlUp).Row
        Set MaRech = .Range("U3:U" & DerLigS).Find(Me.Numero.Value, LookIn:=xlValues, LookAt:=xlWhole)
        If Not MaRech Is Nothing Then
            'On décale les cellules à partir de C vers la droite
            '.Range("C" & MaRech.Row).Insert xlShiftToRight
            'La dernière cellule de la ligne MaRech.Row
            'Set CelFin = .Cells(MaRech.Row, .Columns.Count).End(xlToLeft)
            'En B on insère la formule
            '.Range("V" & MaRech.Row).Formula = "=CountA(V" & MaRech.Row & ":" & CelFin.Address(0, 0) & ")"
            Set CelFin = Nothing
            'On écrit en C notre texte et on applique la mise en forme
            With .Range("W" & MaRech.Row)
                .Value = CDate(DTPicker1.Value)
                .Font.Name = "Arial"
                .Font.Size = 12
                .Borders.LineStyle = xlContinuous
            End With
            With .Range("V" & MaRech.Row)
                .Value = Me.TextBox1.Value
                .Font.Name = "Arial"
                .Font.Size = 14
                .Borders.LineStyle = xlContinuous
            End With
            With .Range("X" & MaRech.Row)
                .Value = CDate(DTPicker2.Value)
                .Font.Name = "Arial"
                .Font.Size = 12
                .Borders.LineStyle = xlContinuous
            End With
            Set MaRech = Nothing
        End If
    End With
    Me.TextBox1.Value = ""
    [W3] = DTPicker1.Value
 
Application.ScreenUpdating = True
End If
End Sub


et passer a la ligne suivante jusqu'a la derniere ligne
merci
cris

7 réponses

Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
1
j'ai reussit avec la mise en forme conditionnelle,je n'avais jamais utilise cette fonction
merci
cris
Messages postés
14828
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 novembre 2021
157
Bonjour,

Tu peux utiliser les mises en forme automatique.
Regardes ensuite, le code généré et comment propager la mise en forme sans écraser le contenu des cellules (Étirement spécial (je n'ai pas le nom exacte en tête)).

Sinon, tu travailles avec quelle version d'Excel ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
1
bonjour
je ne connais pas bien la mise en forme automatique.
je suis sur excel 2007
cris
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut

Mise en forme automatique : voir dans les menus et dans l'aide.

Malgré tout, tu ne pourras faire que des comparaisons basiques dans les conditions de cette fonction très pratique.
Le mieux serait de travailler avec une boucle, telle que tu l'as fait dans le code exemple (qui n'a pas grand chose à voir avec le problème, d'ailleurs)
Une boucle, donc, et l'utilisation de la fonction DateDiff afin de calculer l'écart entre les deux dates (qu'on suppose y avoir dans les cellules), genre
Dim oRange As Range
Set oRange =  Range("U3")
If DateDiff("d", oRange.Value, oRange.Offset(0, 2).Value) > 7 Then
    ' Plus de 7 jours
    ...


Dans ton énoncé
" si W3 - X3 = 2 semaines cel U3= col 10092390 "
Que veut dire "col" ?
Couleur ?
C'est le genre de détail dans un explicatif qui fait qu'on n'y comprend rien.

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
140
Date d'inscription
lundi 9 juin 2008
Statut
Membre
Dernière intervention
18 avril 2012
1
tu as raison cel au de cellule
et col au de couleur, j'aurais mieux fait de tout ecrire pour une meilleure comprehension
et que la cellule X3 - la cellule W3 est egale a 7 jours alors U3 de couleur jaune
si 14 jours couleur verte, si 21 jours couleur bleu clair, et si = 4 semaines = couleur grise
et ainsi de suite pour les lignes suivantes.
cela aurait ete clair
cris
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Ok, donc l'idée que je t'ai fournie est correcte.
Il te suffit de créer une boucle sur chacune des cellules de X3 à X...
Dans le code d'exemple, je me suis trompé : ce n'est pas U3 mais X3 qu'il te faut, et dans ce cas, la cellule W3 se trouve à l'Offset (0, -1)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
PS : En ce qui concerne le coloriage des cellules, tu trouveras le code nécessaire en enregistrant une macro pendant que tu colores une cellule.