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.