rajout d'une condition pour textbox

  • Initiateur de la discussion Initiateur de la discussion philippe69
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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]
 
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
 
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
 
Re😛our 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]
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
5
Affichages
911
Réponses
9
Affichages
385
Réponses
15
Affichages
784
Réponses
4
Affichages
754
Réponses
2
Affichages
771
Retour