Bonsoir ;
je suis débutant dans VBA, je réalise de petits formulaires pour m'aider dans mes travaux de saisie multiple.
le code ci-dessous enregistre dans chaque tableau de la feuille les données que j'entre en fonction du choix de la feuille spécifiée.
le problème c'est que :
1- Pour le premier enregistrement j'arrive pas à me positionner sur la dernière ligne, celle juste après les en-têtes.
le message renvoyé est celui-ci : "ERREUR D'EXECUTION '438' : PROPRIETE OU METHODE NON GEREE PAR CET OBJET" ou encore le ERREUR D'EXECUTION '9'.
Tout s'arrête par la suite
2- Je souhaite forcer la majuscule dans les champs "texte1, texte2, texte3"
3- Enfin je désire interdire tout enregistrement tant que tous les champs ne sont pas renseignés.
Merci de m'aider.
code vba
'Procédure permettant de fermer le formulaire
Private Sub btnfermer_Click()
Unload Me
End Sub
'Procédure permettant l'initialisation du formulaire
Private Sub UserForm_Initialize()
Dim Feuille As Worksheet
'Nous parcourons toutes feuilles du classeur
For Each Feuille In Worksheets
Select Case Feuille.CodeName 'CodeName est le nom de code de la feuille
'On retire de la combobox les feuilles à ne pas afficher
Case "Feuil2", "Feuil3"
'Et on prend le reste des feuilles
Case Else
'On charge les noms dans la liste déroulante
Me.cboChoixClasse.AddItem Feuille.Name
End Select
Next Feuille
End Sub
'Procédure permettant de réinitialiser le formulaire
'Procédure permettant d'ajouter un nouvel enregistrement
'à la fin du tableau
Private Sub btnAjout_Click()
Dim nbControle As Integer
Dim Nouvelleligne As Range
Dim MaFeuille As String
'Procédure permettant d'obliger le remplissage de tous les champs
'On teste la saisie de tous les champs dans le formulaire
If Len(texte1) = 0 Then
lblMessage = "Veuillez saisir le Nom de l'élève"
Me.texte1.SetFocus
ElseIf Len(texte2) = 0 Then
lblMessage = "Veuillez saisir le Prénom de l'élève"
Me.texte2.SetFocus
ElseIf Len(texte3) = 0 Then
lblMessage = "Veuillez saisir la Date de Naissance de l'élève"
Me.texte3.SetFocus
ElseIf Len(texte4) = 0 Then
lblMessage = "Veuillez saisir le Lieu de Naissance de l'élève"
Me.texte4.SetFocus
ElseIf Len(texte5) = 0 Then
lblMessage = "Veuillez saisir le Matricule de l'élève"
Me.texte5.SetFocus
ElseIf Len(texte6) = 0 Then
lblMessage = "Veuillez Selectionner le Sexe de l'élève"
Me.texte6.SetFocus
ElseIf Len(cboChoixClasse) = 0 Then
lblMessage = "Veuillez Selectionner le Niveau d'étude de l'élève"
Me.cboChoixClasse.SetFocus
Else
End If
'On recupère le nom de la feuille de la liste déroulante
MaFeuille = cboChoixClasse.Value
'On teste qu'il y'a bien le nom d'une feuille de selectionnée
If Me.cboChoixClasse.Value = "" Then
MsgBox "Veillez selectionner la classe dans laquelle sera enregistré(e) l'élève" & " ", vbOKOnly + vbInformation, "VALIDATION"
Exit Sub
End If
'On recupère le nombre de contrôle dans le userform
nbControle = 6
'On se positionne sur la dernière ligne vide de la table de données
Set Nouvelleligne = Sheets(MaFeuille).Cells(Rows.Cont, 1).End(xlUp).Offset(1, 0)
For X = 1 To nbControle
Nouvelleligne = Me.Controls("texte" & X).Value
Set Nouvelleligne = Nouvelleligne.Offset(0, 1)
Next X
'On réinitialise les champs du formulaire à vide
For X = 1 To nbControle
Me.Controls("texte" & X).Value = ""
Next X
cboChoixClasse.Value = ""
'On affiche un message confirmant la nouvelle saisie dans la table
MsgBox "Le (la) nouvel(le) élève a bien été ajouté sur la feuille :" & MaFeuille, vbOKOnly + vbInformation, "VALIDATION"
End Sub
f894009
Messages postés17185Date d'inscriptiondimanche 25 novembre 2007StatutMembreDernière intervention15 avril 20241 701 Modifié le 15 juin 2019 à 06:47
Bonjour,
'premiere cellule vide colonne A
With Sheets(MaFeuille)
Nouvelleligne = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
If Nouvelleligne = 1 Then
Nouvelleligne = Nouvelleligne + 1
End If
'écriture sur ligne
For X = 1 To 6
.Cells(Nouvelleligne, X) = Me.Controls("texte" & X).Value
Me.Controls("texte" & X).Value = ""
Next X
End With
f894009
Messages postés17185Date d'inscriptiondimanche 25 novembre 2007StatutMembreDernière intervention15 avril 20241 701 Modifié le 15 juin 2019 à 06:46
Merci déjà pour la contribution, toutefois, l'exécution du code renvoi un message d'erreur ainsi affiché :
Erreur d'exécution '91': variable objet ou variable de bloc with non définie.
Modifié le 15 juin 2019 à 06:46
Mis RAZ Textbox dans la meme boucle
15 juin 2019 à 17:01
Erreur d'exécution '91': variable objet ou variable de bloc with non définie.