Empêcher l'écriture du Userform dans les cellules si

Salut les amis,

J'aimerais, s'il vous plaît une aide sur un projet.

1. j'ai un bouton valider, dans un Userform, qui permet l'écriture du contenu des textbox dans les cellules correspondantes des feuilles concernées d'Excel;

2. je voudrais que l'écriture depuis les textbox du userform, dans les cellules, ne se fasse qu'à la condition qu'aucun textbox n'ait pas été correctement et effectivement rempli;

3. le problème, c'est que je ne sais pas comment procéder pour accompagner le remplissage des textbox (en indiquant qu'il faut renseigner tel textbox ou tel autre, selon le cas, par des Msgbox ou autre) tout en conditionnant le fonctionnement du bouton "Valider l'enregistrement" qui permet l'écriture dans les cellules correspondantes.

Je vous envoie le code du bouton "Valider l'enregistrement", à toute fin utile.

Je vous serez vraiment reconnaissant si vous vouliez bien me donner un coup de pouce.

Merci.

Private Sub CommandButton2_Click()

Sheets("BdD").Rows("2:2").Select 'aller à la cellule de laquelle une nouvelle ligne doit-être créée

Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'création de la nvelle ligne pour écriture

Sheets("BdD").[B2] = DateSaisie 'écriture des valeurs saisies dans les cellules correspondantes de la feuille "BdD"

Sheets("BdD").[C2] = Etudiant 'écriture des valeurs saisies dans les cellules correspondantes de la feuille "BdD"

Sheets("BdD").[D2] = Langue 'écriture des valeurs saisies dans les cellules correspondantes de la feuille "BdD"

Sheets("BdD").[E2] = Début 'écriture des valeurs saisies dans les cellules correspondantes de la feuille "BdD"

Sheets("BdD").[F2] = Fin 'écriture des valeurs saisies dans les cellules correspondantes de la feuille "BdD"

Sheets("BdD").Range("G2").Select 'sélectionner la cellule correspondant au lieu de calcul du nbre d'heures

ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]" 'calcul du nbre total d'heures, puis écriture dans cellule correspondante

Selection.Font.Bold = False 'ne pas mettre en gras

Selection.Font.Underline = xlUnderlineStyleNone 'ne pas souligner

With Selection 'appliquer à toute la sélection les caractéristiques suivantes

.HorizontalAlignment = xlCenter 'centre horizontal

.VerticalAlignment = xlBottom 'position verticale: bas

.WrapText = False 'renvoi automatique à la ligne: ne pas appliquer

.Orientation = 0 'inclinaison: aucune

.AddIndent = False 'aucune indentation

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

If DateSaisie = "" Then 'TENTATIVE D'INTRODUCTION DES CONDITIONS DE VALIDATION

Données.Hide

MsgBox ("Veuillez vous assurer que La Date du cours, l'heure de début et de fin, sont bien renseignées, avant d'enregistrer vos heures")

Données.Show

End If

ThisWorkbook.Save 'enregistrer les données saisies dans le formulaire des données

Unload Me '1ère étape pour saisie pour nvlles données: vider les textbox du formulaire de données

Données.Show '2ème étape: affichage du formulaire de données vidé

End Sub

Bonjour xlake, le forum,

je voudrais que l'écriture depuis les textbox du userform, dans les cellules, ne se fasse qu'à la condition qu'aucun textbox n'ait pas été correctement et effectivement rempli;

Si j'ai bien compris, il faut que toutes les textbox soient remplies pour valider ?

A tester: A placer en début de code, après le "Private Sub CommandButton2_Click()"

 If DateSaisie.Value <> "" Then
     Else
MsgBox "Veuillez renseigner la date"
     Exit Sub
     End If

     If Etudiant.Value <> "" Then
     Else
MsgBox "Veuillez renseigner l'étudiant"
     Exit Sub
     End If

     If Langue.Value <> "" Then
     Else
MsgBox "Veuillez préciser la langue"
     Exit Sub
     End If

     If Début.Value <> "" Then
     Else
MsgBox "Veuillez renseigner le début"
     Exit Sub
     End If

     If Fin.Value <> "" Then
     Else
MsgBox "Veuillez renseigner la fin"
     Exit Sub
     End If

Cordialement,

Salut xorsankukai,

Je te remercie pour la rapidité de ta réponse. Je voudrais juste te demander si "Exit sub", alors que le code se trouve dans le Userform, et que l'instruction se trouve au tout début, ne fait pas sortir et sauter toutes les autres instructions d'écriture dans les cellules ?

Merci d'avance pour ta patience.

Xav.

Xorsankukai,

En fait, je viens de tester ton code, et ça fonctionne à merveille !!!

J'avoue que je ne comprends pas le comment (raison de ma question), mais le résultat est très exactement celui que je voulais et attendais.

Vraiment, merci beaucoup.

Xav.

Re,

If DateSaisie.Value <> "" Then
     Else
MsgBox "Veuillez renseigner la date"
     Exit Sub
     End If

If DateSaisie.Value <> "" si la textbox DateSaisie n'est pas vide alors on continue la procédure

Else sinon

MsgBox "Veuillez renseigner la date" on affiche un message "Veuillez renseigner la date"

Exit Sub on sort de la procédure, donc on inscrit rien.

End If fin de la condition

On aurait pu écrire aussi:

    If DateSaisie.Value ="" Then     
    MsgBox "Veuillez renseigner la date"
         Exit Sub
         End If

Si textbox vide, message+ sortie de procédure.

Je pense que tu peux supprimer ces lignes de ton code: ça fait doublon

If DateSaisie = "" Then 'TENTATIVE D'INTRODUCTION DES CONDITIONS DE VALIDATION
Données.Hide
MsgBox ("Veuillez vous assurer que La Date du cours, l'heure de début et de fin, sont bien renseignées, avant d'enregistrer vos heures")
Données.Show
End If

Bonne soirée,

Cher Xorsankukai,

Je te remercie vraiment pour tes efforts; en plus d'avoir résolu mon problème, tu m'as aussi permis de comprendre la logique.

Très cordialement.

Xav.

Rechercher des sujets similaires à "empecher ecriture userform"