Je cherche à remplir une feuille d'excel avec les données que rentre l'utilisateur, c'est à dire qu'il y a trois Zone de texte (nom, adresse et ville) et à chaque "client", je rajout un numéro. Mais une erreur apparaît à chaque fois.
L'erreur me dit: Erreur 424, objet requis
Voila mon code:
Private Sub enegistrerclient_Click()
Worksheets("Acheteur").Activate
'Donne le numéro au client (c'est la que l'erreur apparaît à chaque fois)
plage.Cells(i, j) = i - 1
j = j + 1
'Met le texte de "nom" dans la cellule (i,j)
plage.Cells(i, j).Value = nom.Text
j = j + 1
plage.Cells(i, j).Value = adresse.Text
j = j + 1
plage.Cells(i, j).Value = ville.Text
j = 1
'redonne la valeur 1 à j, j étant le numéro de collone dans le tableur excel
numach.Caption = i - 1 'fait apparaître le numéro du client dans
Coucou, quelques problèmes dans ton code avec un "s" les problèmes !
1. tu déclare i et j dans l'initialisation de ta form en local il ne sortiront pas comme ça de ta sub !
2. plage.Cells(i, j) = i - 1 tu as oublié le .value mais bon vu que i n'a pas de valeur connue
Bon ton gros soucis reside dans le fait que tu fais une grosse boulette dès le début.
Pour toi en déclarant i et j dans initialize tu penses que tes variables vont être reconnues partout
et bien non elles restenst dans la sub initialize ce qui fait que dans ta fonction enregistrerclient i a n'importe quoi comme valeur.
Je te propose une soluce toute bête à ton problème pour que tu avances un peu.
[code]
Private Sub enregistrerclient_Click()
Dim coln, colnom, colad, colvill As Integer
'Définit les colonnes à remplir
coln = 1
colnom = 2
colad = 3
colvill = 4
'Tu vas me dire que ça sert pas à grand chose mais c'est une bonne habitude à prendre
'car en cas de modification de colonne un jour, tout est au début.
'Dans ton code tu te sers des variables et ça t'évite de tout changer partout
With Worksheets("acheteur")
'on recupere le numèro du dernier client
'si premier alors num_client = 1
num_client = .Range("A1").End(xlDown).Value
If num_client = "" Then
num_client = 1
Else
'sinon c'est le client suivant
num_client = num_client + 1
End If
'On mets nos champs à jour
.Cells(num_client + 1, coln).Value = num_client
.Cells(num_client + 1, colnom).Value = nom.Text
.Cells(num_client + 1, colad).Value = adresse.Text
.Cells(num_client + 1, colvill).Value = ville.Text
End With
End Sub
[\code]
j'ai changer le code comme tu m'a dit, (enfin je pense) mais ca ne marche toujours pas....
voila le nouveau code:
Private Sub enegistrerclient_Click()
Dim i, j As Integer
Dim plage As Range
Worksheets("Acheteur").Activate
Set plage = Range("A1:D351")
plage.Cells(i, j).Value = i - 1
j = j + 1
plage.Cells(i, j).Value = nom.Text
j = j + 1
plage.Cells(i, j).Value = adresse.Text
j = j + 1
plage.Cells(i, j).Value = ville.Text
j = 1
numach.Caption = i - 1
End Sub
______________________________________________________________________
Private Sub UserForm_Initialize()
Dim i, j As Integer
i = 2
j = 1
End Sub
cette fois ci il me dit "erreur 1004: erreur définie par l'application ou par l'objet