rajout d'une condition pour textbox

P

philippe69

Guest
Bonjour le forum

Comme vous pouvez le voir dans la macro ci-dessous, j'ai la textbox5 dans laquelle je rentre une date. Cette date s'ajoute automatiquement à la suite de la dernière ligne non vide de la colonne A de ma feuil1.

J'aimerais rajouter une condition à cette macro.

je souhaiterai que lorsque l'on rentre une date dans la textbox5, si le mois de celle_ci est supérieure au mois d'une date située en A11 de ma feuil3, un message indique comme quoi l'utilisateur doit archiver les données.

Pourriez_vous m'aider à intégrer cette condition à la macro ci-jointe ?

Merci par avance.
Philippe

Code:
Private Sub CommandButton2_Click()
Dim LastLine As Long

If Not IsDate(Me.TextBox5) Then
    MsgBox 'Vous devez indiquer une date valide'
    Exit Sub
End If

    If TextBox5 = Empty Then
        UserForm4.Show
    ElseIf TextBox6 = Empty Then
        UserForm5.Show
    ElseIf TextBox7 = Empty Then
        UserForm6.Show
    Else
    
        With Sheets('Feuil1')
            .Unprotect
            LastLine = .Range('A65536').End(xlUp).Row + 1
            
            With .Range('A' & LastLine)
            .Value = CDate(TextBox5.Value)
            .NumberFormat = 'dd/mm/yyyy'
            End With
            
            .Range('B' & LastLine).Value = Month(TextBox5.Value)
            .Range('C' & LastLine).Value = Day(TextBox5.Value)
            .Range('D' & LastLine).Value = TextBox6.Value
            .Range('E' & LastLine).Value = TextBox7.Value
        End With
        
        TextBox5 = ''
        TextBox6 = ''
        TextBox7 = ''
    MsgBox ('votre relevé a été pris en compte')
    End If
    
Dim L As Integer
With Sheets('feuil1')
L = .Range('a65536').End(xlUp).Row
.Range('A1:E' & L).Sort Key1:=Range('A1'), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Philippe, le Forum

Ajoute une petite Priate Sub comme ceci :

Private Sub TheDateControler(MyDateInTextBox As Date)
Dim MyDateInRange As Date

If Not IsDate(Sheets('Feuil3').Range('A11')) Then
    MsgBox 'Vous devez indiquer une date valide'
     
Exit Sub
Else
    MyDateInRange = Sheets('Feuil3').Range('A11')
End If

If Month(MyDateInTextBox) < Month(MyDateInRange) Then
    MsgBox 'Pas Glop' & Month(MyDateInTextBox) & ' ' & Month(MyDateInRange)
Else
    MsgBox 'Glop Glop'
End If
End Sub


Tu pourras la lancer à ce moment là dans ton Code

Private Sub CommandButton2_Click()
Dim LastLine As Long

If Not IsDate(Me.TextBox5) Then
    MsgBox 'Vous devez indiquer une date valide'
   
Exit Sub
Else
TheDateControler Me.TextBox5
End If
'........ la suite

Bon aprèm
[ol]@+Thierry[/ol]
 
P

philippe69

Guest
Merci Thierry

Ca marche impec! Par contre, je m'aperçois que je n'ai pas été suffisament préçis dans ma demande. Car en fait le message (pas glop, tiens un adepte de Pifou )ne doit apparaître que dans le cas ou la date de la textbox5 est égal au mois et à l'année suivante de la cellule A11 en feuille 3.

Disons que si la date en A11 est 11/05/2005. Le message ne doit se déclencher que si la date de la textbox5 est > au dernier jour du mois d'avril 2006.

ouf ca y'est j'y suis arrivé.
Désolé pour ce cafouillage
 
P

philippe69

Guest
Pour thierry ou qq d'autre !

Je pense que tu ne dois plus être sur le forum. Mais au cas ou un XLnaute lise ce message, ma foi je pense que Thierry ne m'en voudra pas si je sollicite de l'aide en son absence pour corriger sa macro en fonction des éléments de mon dernier post.

Amicalement
Philippe
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:pour thierry ou qq d'autre !

Bonsoir Philippe, quelqu'un d'autre et le Forum

En règle générale de notre Forum (voir Charte il est plutôt déconseillé d'interpeller les contributeurs/contributrices directement.

Sinon donc, et sous réserve d'avoir bien interprété ta demande voici un code adapté :


Private Sub TheDateControler(MyDateInTextBox As Date)
Dim MyDateInRange As Date
Dim YearInRange As Integer
Dim MonthInRange As Integer
Dim YearInTextBox As Integer
Dim MonthInTextBox As Integer


If Not IsDate(Sheets('Feuil3').Range('A11')) Then
    MsgBox 'Vous devez indiquer une date valide'
     
Exit Sub
Else
    MyDateInRange = Sheets('Feuil3').Range('A11')
End If

YearInRange = Year(MyDateInRange)
MonthInRange = Month(MyDateInRange)
YearInTextBox = Year(MyDateInTextBox)
MonthInTextBox = Month(MyDateInTextBox)

If CStr(YearInRange + 1 & MonthInRange) < CStr(YearInTextBox & MonthInTextBox - 1) Then
    MsgBox 'Pas Glop'
Else
    MsgBox 'Glop Glop'
End If
End Sub

Bonne Soirée
[ol]@+Thierry[/ol]