Microsoft 365 Adapter ma macro avec date aujourd'hui

Moreno076

XLDnaute Impliqué
Bonsoir à tous.

Dans le fichier ci-joint je souhaiterais compléter ma fin de macro de la façon suivante.

Si la date de la colonne M est inférieure à celle du jour alors "Pas de date précise".

ub RajoutDoublon()
Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
For i = 2 To Taille
If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
ValM = Range("M" & i)
Select Case ValM
Case ""
Range("N" & i) = "Pas de date précise"
Case "< DOUBLON >"
Range("N" & i) = "< DOUBLON >"


End Select
Next i
End Sub


Merci pour votre aide.
 

Pièces jointes

  • GRv7test.xlsm
    315.3 KB · Affichages: 7
Solution
Bonsoir.
Il suffit de mettre dans votre Seclect case :
VB:
       Select Case ValM
            Case "", Is < Date
                Range("N" & i) = "Pas de date précise"
            Case "< DOUBLON >"
                Range("N" & i) = "< DOUBLON >"
            End Select
Mais j'ai l'impression que vous pourriez faire ça avec cette formule en N2, à propager sur 24 lignes :
Code:
=SI(OU(A2="< DOUBLON >";M2="< DOUBLON >");"< DOUBLON >";SI(OU(M2="";M2<AUJOURDHUI());"Pas de date précisée";SERIE.JOUR.OUVRE.INTL(M2;1;11;X$2:X$12)))

JBARBE

XLDnaute Barbatruc
Bonsoir à tous,
Peut-être ceci :
VB:
Option Explicit
Dim i As Long, ValM As String, Taille As Long

Sub RajoutDoublon()
    Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
    For i = 2 To Taille
        If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
        ValM = Range("M" & i)
            If ValM = "" Then
            Range("N" & i).Clear
            Range("N" & i).Borders(xlEdgeLeft).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeTop).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeBottom).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeRight).LineStyle = xlContinuous
            ElseIf ValM <> "" And ValM < Date Then
            Range("N" & i) = "Pas de date précise"
            ElseIf ValM = "< DOUBLON >" Then
                Range("N" & i) = "< DOUBLON >"
            End If
    Next i
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Une suggestion en passant
VB:
Range("N" & i).Borders(xlEdgeLeft).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeTop).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeBottom).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeRight).LineStyle = xlContinuous
et
Range("N" & i).Borders.LineStyle = 1
font exactement la même chose
;)
(Donc une ligne de code au lieu de 4, c'est toujours cela de pris ;))
 

Moreno076

XLDnaute Impliqué
Bonsoir à tous,
Peut-être ceci :
VB:
Option Explicit
Dim i As Long, ValM As String, Taille As Long

Sub RajoutDoublon()
    Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
    For i = 2 To Taille
        If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
        ValM = Range("M" & i)
            If ValM = "" Then
            Range("N" & i).Clear
            Range("N" & i).Borders(xlEdgeLeft).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeTop).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeBottom).LineStyle = xlContinuous
            Range("N" & i).Borders(xlEdgeRight).LineStyle = xlContinuous
            ElseIf ValM <> "" And ValM < Date Then
            Range("N" & i) = "Pas de date précise"
            ElseIf ValM = "< DOUBLON >" Then
                Range("N" & i) = "< DOUBLON >"
            End If
    Next i
End Sub
Re.
Non ca ne fonctionne pas les dates antérieures à la date du jour de la colonne M n'entraine la mise en place de "Pas de date précise" Cdlt
 

JBARBE

XLDnaute Barbatruc
Re,
Voici à nouveau le fichier en rectifiant le code Range("N" & i).Borders.LineStyle = 1 (merci Staple que je salut )
bonne nuit !
VB:
Option Explicit
Dim i As Long, ValM, Taille As Long

Sub RajoutDoublon()
Application.ScreenUpdating = False
    Taille = ThisWorkbook.Sheets("Synthèse").Range("A" & Cells.Rows.Count).End(xlUp).Row
    For i = 2 To Taille
        If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
        ValM = Range("M" & i)
            If ValM = "" Then
            Range("N" & i).Clear
            Range("N" & i).Borders.LineStyle = 1
            ElseIf ValM <> "" And ValM < Date Then
            Range("N" & i) = "Pas de date précise"
            ElseIf ValM = "< DOUBLON >" Then
                Range("N" & i) = "< DOUBLON >"
            End If
    Next i
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • GRv7test.xlsm
    284.8 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Bonsoir.
Il suffit de mettre dans votre Seclect case :
VB:
       Select Case ValM
            Case "", Is < Date
                Range("N" & i) = "Pas de date précise"
            Case "< DOUBLON >"
                Range("N" & i) = "< DOUBLON >"
            End Select
Mais j'ai l'impression que vous pourriez faire ça avec cette formule en N2, à propager sur 24 lignes :
Code:
=SI(OU(A2="< DOUBLON >";M2="< DOUBLON >");"< DOUBLON >";SI(OU(M2="";M2<AUJOURDHUI());"Pas de date précisée";SERIE.JOUR.OUVRE.INTL(M2;1;11;X$2:X$12)))
 

jmfmarques

XLDnaute Accro
Bonjour,
comment peut-on écrire :
VB:
ElseIf ValM <> "" And ValM < Date Then
alors que l'on a écrit plus haut
Code:
 If Range("A" & i) = "< DOUBLON >" Then Range("M" & i) = "< DOUBLON >"
qui fait que l'on aura des valeur "< DOUBLON >", donc <> "" et qui seront donc forcément > date (comparaison de chaine de caractères) !
Mais bon ... l'essentiel est d'avoir un bouton qui clignote, hein ... Le reste n'a pas d'importance.
 

Discussions similaires

Réponses
7
Affichages
319

Statistiques des forums

Discussions
312 194
Messages
2 086 068
Membres
103 110
dernier inscrit
Privé