Souci création base de données Userform VBA

Lou_00

XLDnaute Nouveau
Bonjour,

Je suis toute nouvelle sur ce forum et je fais mes débuts en VBA.
J'essaie de créer une base de données sous Excel grâce à un Userform relié directement à la feuille Excel.
Mais toutes mes données "s'écrasent entres elles", elles s'enregistrent toutes à la première ligne...

Quelqu'un pourrait m'aider svp?

D'avance merci !

Voici le code de mon userform :

Private Sub Enregistrer_Click()
num = Sheets("BDD").Range("A65536").End(xlUp).Row + 1

Sheets("BDD").Range("B" & num) = Zonenom.Value
If Zonenom.Text = "" Then 'Cancel = True
MsgBox "Veuillez saisir le nom"
Zonenom.SetFocus
Else
Beep
End If
Sheets("BDD").Range("C" & num) = Zoneprenom.Value
Sheets("BDD").Range("D" & num) = Adressemail.Value
Sheets("BDD").Range("E" & num) = Adressemailperso.Value
Sheets("BDD").Range("F" & num) = Numeroetudiant.Value

If Professeur1 = True Then
Sheets("BDD").Range("G" & num).End(xlUp).Offset(1, 0) = Professeur1.Caption
ElseIf Professeur2 = True Then
Sheets("BDD").Range("G" & num).End(xlUp).Offset(1, 0) = Professeur2.Caption
ElseIf Professeur3 = True Then
Sheets("BDD").Range("G" & num).End(xlUp).Offset(1, 0) = Professeur3.Caption
ElseIf Professeur4 = True Then
Sheets("BDD").Range("G" & num).End(xlUp).Offset(1, 0) = Professeur4.Caption
End If

Unload UserForm
'Unload ferme l'UserForm

End Sub
 

joss56

XLDnaute Accro
Re : Souci création base de données Userform VBA

Bonjour et bienvenue sur ce site,

Un petit fichier qui, je l'espère, t'aidera.
A adapter à tes besoins, bien entendu.

Bonne journée
 

Pièces jointes

  • etudiant.xls
    40.5 KB · Affichages: 84
  • etudiant.xls
    40.5 KB · Affichages: 86
  • etudiant.xls
    40.5 KB · Affichages: 90

Lou_00

XLDnaute Nouveau
Re : Souci création base de données Userform VBA

Merci beaucoup pour votre réponse,

Cependant je n'arrive pas à appliquer la boucle car mes zones de textes ne s'appellent pas "Zonetext1", "Zonetext2"... mais bien des noms définis.
J'ai essayé tout de même d'appliquer la boucle pour le numéro de la ligne et cela ne fonctionne pas, j'ai un débogage :

Private Sub Enregistrer_Click()

Dim lig
lig = 1

With Sheets("BDD")
Do While .Cells(lig, 1) <> ""
lig = lig + 1
Loop

Sheets("BDD").Range("Base!B" & lig) = Zonenom.Value <=== Cette ligne est surlignée
If Zonenom.Text = "" Then 'Cancel = True
MsgBox "Veuillez saisir le nom"
Zonenom.SetFocus
Else
Beep
End If
Sheets("BDD").Range("Base!C" & lig) = Zoneprenom.Value
Sheets("BDD").Range("Base!D" & lig) = Adressemail.Value
Sheets("BDD").Range("Base!E" & lig) = Adressemailperso.Value
Sheets("BDD").Range("Base!F" & lig) = Numeroetudiant.Value

If Professeur1 = True Then
Sheets("BDD").Range("G" & lig).End(xlUp).Offset(1, 0) = Professeur1.Caption
ElseIf Professeur2 = True Then
Sheets("BDD").Range("G" & lig).End(xlUp).Offset(1, 0) = Professeur2.Caption
ElseIf Professeur3 = True Then
Sheets("BDD").Range("G" & lig).End(xlUp).Offset(1, 0) = Professeur3.Caption
ElseIf Professeur4 = True Then
Sheets("BDD").Range("G" & lig).End(xlUp).Offset(1, 0) = Professeur4.Caption
End If

End With
Unload UserForm
'Unload ferme l'UserForm

End Sub


Du coup j'ai essayé une autre méthode "LigneMax" que j'ai trouvé sur un tutoriel, mais ne fonctionne pas non plus... Voici mon fichier, si cela peut vous aider à voir où je bloque.

Merci beaucoup en tout cas pour votre réactivité
 

Pièces jointes

  • Essai sujet2.xlsm
    25.1 KB · Affichages: 76
  • Essai sujet2.xlsm
    25.1 KB · Affichages: 66
  • Essai sujet2.xlsm
    25.1 KB · Affichages: 65

gilbert_RGI

XLDnaute Barbatruc
Re : Souci création base de données Userform VBA

Bonjour et bienvenue sur XLD

comme ceci peut-être
 

Pièces jointes

  • Essai sujet2.xlsm
    24.1 KB · Affichages: 70
  • Essai sujet2.xlsm
    24.1 KB · Affichages: 68
  • Essai sujet2.xlsm
    24.1 KB · Affichages: 76

Lou_00

XLDnaute Nouveau
Re : Souci création base de données Userform VBA

Merci beaucoup gilbert_RGI c'est exactement ce qu'il me fallait !! :)
Maintenant j'essaie de trouver comment rendre obligatoire le fait de remplir un textbox.

J'ai inséré :
If Zonenom.Text = "" Then 'Cancel = True
MsgBox "Veuillez saisir le nom"
Zonenom.SetFocus
Else
Beep
End If


Mais le souci est que la msgbox apparaît bien, mais la "ligne" est enregistrée tout de même (avec le nom vide). Ce que j'aimerais c'est pouvoir justement revenir au userform jusqu'à ce que le textbox soit rempli.
Il y a une fonction pour cela ?
 

Lou_00

XLDnaute Nouveau
Re : Souci création base de données Userform VBA

Laetitia, merci beaucoup pour ce fichier ! Tout fonctionne parfaitement.

Cependant, je suis novice en VBA et j'aimerais bien comprendre le programme pour pouvoir l'utiliser plus tard. Je ne comprends pas par exemple pourquoi je n'ai plus les formules de départ "Sheets("BDD").Range("Base!C" & lig) = Zoneprenom.Value" ...

Merci pour votre aide en tous cas !
 

laetitia90

XLDnaute Barbatruc
Re : Souci création base de données Userform VBA

re,:)
c'est pas la peine je fais directement reference a la feuille par son code_name
autrement on peut trés bien ecrire comme cela avec with pour simplifier attention pas oublie le point au depart de chaque ligne

Code:
With Sheets("BDD")
 .Range("Base!C" & LigneMax) = Zoneprenom.Value
 .Range("Base!D" & LigneMax) = Adressemail.Value
 .Range("Base!E" & LigneMax) = Adressemailperso.Value
 .Range("Base!F" & LigneMax) = Numeroetudiant.Value
End With

dans ton cas j'ai renommées les textboxs plus simple avec chronologie donc
Code:
For i = 1 To 5
 Feuil1.Cells(x, i + 1) = Controls("t" & i).Value
 Next i

autrement en laissant en l'etat il faut ecrire comme cela la sequence de code

Code:
 i = 2
 For Each j In Controls
 If TypeName(j) = "TextBox" Then Feuil1.Cells(x, i) = j.Value: i = i + 1
 Next j

tu remarque feuil1 apparait tout le temps
on peut trés ecrire comme cela avec with

Code:
With Feuil1
 i = 2
 For Each j In Controls
 If TypeName(j) = "TextBox" Then .Cells(x, i) = j.Value: i = i + 1
 Next j
 End With


mais bon pour peut de lignes de code sert a rien
autrement avantage du code_name tu renomme ta feuille le code marcheras toujours
 

Discussions similaires

Réponses
4
Affichages
205
Réponses
1
Affichages
164

Membres actuellement en ligne

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972