Textbox avec une condition

Bonjour, j'ai fait une textebox qui se trouve dans un Userform dans laquelle je veux écrire une date. Je vérifie si la cellule active a une date. Si elle est vide, je veux pouvoir écrire dans le textbox une date qui sera ensuite écrite dans le cellule active. Tout cela dans une boucle car je dois vérifier plusieurs cellules. Si ces cellules sont vides, il faut entrez une date. Si je fais pas à pas, ça marche mais quand je fais F5, impossible d'entrez une date dans le textbox. Il boucle sans arrêt jusqu'à la fin. Si je fait escape, il ré-affiche le message. Comment ont fait pour dire à VBA arrête le temps que j'inscrive mon texte? J'ai un bouton qui sert à activer le code. Naturellement, ce n'est pas "Pause" car on ne peut rien faire durant la pause..

voici mon code:

Option Explicit
Private Sub CommandButton3_Click()

Do
If TextBox1.Value = "" Then
MsgBox "Vous devez entrez une date!"
'Que faut-il écrire ici pour que la macro arrête le temps d'écrire ma date?
ActiveCell.FormulaR1C1 = TextBox1
ActiveCell.Offset(1, 0).Select
Else
'Que faut-il écrire ici pour que la macro arrête le temps d'écrire ma date?
ActiveCell.FormulaR1C1 = TextBox1
ActiveCell.Offset(1, 0).Select
TextBox1.Value = ""
End If

TextBox1.Value = ""
Loop While ActiveCell.Offset(0, 1).Value <> ""

Unload Me

End Sub

merci de votre aide.

Bonsoir,

Une textbox n'est pas une imputbox !

En gros, une textebox n'attend pas que l'utilisateur y mette quelque chose...

C'est la structure générale de votre code qu'il faut repenser, mais là sans fichier...

@ bientôt

LouReeD

Bonjour, oui j'ai compris mon erreur... À force de trop chercher des fois, on oublie ce qui est évident.

voici le code corrigé:

Option Explicit
Private Sub CommandButton3_Click()

Do
If TextBox1.Value = "" Then
MsgBox "Vous devez entrez une date!"
TextBox1 = InputBox("entrez la date!")
ActiveCell.FormulaR1C1 = TextBox1
ActiveCell.Offset(1, 0).Select
Else
TextBox1 = InputBox("entrez la date!")
ActiveCell.FormulaR1C1 = TextBox1
ActiveCell.Offset(1, 0).Select
TextBox1.Value = ""
End If

TextBox1.Value = ""
Loop While ActiveCell.Offset(0, 1).Value <> ""

Unload Me

End Sub

merci

Merci à vous

@ bientôt

LouReeD

Bonsoir,

Une textbox n'est pas une imputbox !

En gros, une textebox n'attend pas que l'utilisateur y mette quelque chose...

C'est la structure générale de votre code qu'il faut repenser, mais là sans fichier...

@ bientôt

LouReeD

Bonjour LouReeD,

Je reviens sur un vieux sujet, mais j'aimerai comprendre ce que l'on peut faire avec une Textbox.

J'ai un exemple, j'aimerai insérer la valeur d'une TextBox dans une formule comme ceci :

Sheets("Feuil1").Cells(1, 2).FormulaR1C1 = _ "=INDIRECT(""TextBox4.Value!D4"")"

Celle-ci ne fonctionne pas alors que celle-ci oui :

Sheets("Feuil1").Cells(1, 2).FormulaR1C1 = _ "=INDIRECT(""Feuil2!D4"")"

Sachant que ma UserForm créer une Feuille avec la valeur dans TextBox4.

Merci de l'aide

Fred

Bonsoir,

c'est un problème de "guillemet".

Sous VBA les guillemets sont utilisés pour "couper" une chaine de caractère afin d'y incorporer une variable avec l'ajout du "et" d'imprimerie :

Variable LRD = 2

MsgBox("Mon âge est de " & LRD & " ans.")

Résultat : Mon âge est de 2 ans.Le guillemet sert à indiquer à VBA que le guillemet ne sert pas de coupure de chaine de caractère, du coup il en faut deux consécutifs :

un dicton : "Ciel rouge le soir, réjouis le cœur du berger"

MsgBox("Comme le dit souvent mon père : ""Ciel rouge le soir, réjouis le cœur du berger"". Et voilà...")

Résultat : Comme le dit souvent mon père : "Ciel rouge le soir, réjouis le cœur du berger". Et voilà...

Du coup si vous avez une chaine de caractère avec des guillemets et qu'en plus vous voulez ajouter une variable, cela donne :

Sheets("Feuil1").Cells(1, 2).FormulaR1C1 ="=INDIRECT("""&TextBox4.Value!D4&""")"

guillemets rouge : début et fin de la chaine de caractère

guillemets verts : doubles guillemet pour que VBA comprenne que le deuxième doit être considéré comme un guillemet

guillemet bleus avec le "et" d'imprimerie "& : coupure de la chaine pour insertion de la variable

Résultat de la chaine de caractère inscrite dans la cellule si TextBox = Feuille2 : =INDIRECT("Feuille2!D4")

Donc insertion d'une variable dans une chaine de caractère après un guillemet fait qu'il doit y avoir 3 guillemets consécutifs ! CQFD !

@ bientôt

LouReeD

Merci pour l'explication

Par contre quand j'insère le code, j'ai une erreur en me surlignant """)" :

Erreur de compilation :

Attendu : fin d'instruction

J'ai mis ceci pour adapter le code à mes noms de feuille et mes variables :

Sheets("Synthèse").Cells(i + 1, 2).FormulaR1C1 = "=INDIRECT("""&TextBox4.Value!D4&""")"

Bonsoir,

je crois avoir répondu sur un autre fil

Vous avez bien fait de changer de fil ! Un fil par question, c'est mieux ! Surtout en déterrant un ancien fil...

@ bientôt

LouReeD

C'est ce que je me suis dis

Je testerai ça demain

Merci encore

Rechercher des sujets similaires à "textbox condition"