Menu

VBA excel: Erreur 424, objet requis [Fermé]

Messages postés
18
Date d'inscription
dimanche 9 septembre 2007
Statut
Membre
Dernière intervention
27 décembre 2008
- - Dernière réponse : Inarius
Messages postés
18
Date d'inscription
dimanche 9 septembre 2007
Statut
Membre
Dernière intervention
27 décembre 2008
- 27 déc. 2008 à 10:28
Bonjour,

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

End Sub

-------------------------------------------------------------------------------------------------------------------

Private Sub UserForm_Initialize()

Dim i, j As Integer
Dim plage As Range

Set plage = Range("A1:D351") 'plage dans laquelle devra être écrit les données rentrés

i = 2
j = 1


End Sub





merci d'avance pour votre aide

Inarius
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
127
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
11 mars 2009
19
2
Merci
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 courage & joyeux noël

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41285 internautes nous ont dit merci ce mois-ci

Messages postés
18
Date d'inscription
dimanche 9 septembre 2007
Statut
Membre
Dernière intervention
27 décembre 2008
0
Merci
merci beaucoup pour cette réponse :D

jvais étudier tout ca et apprendre à utiliser toutes ces foncions :)

encore merci

Inarius
Messages postés
18
Date d'inscription
dimanche 9 septembre 2007
Statut
Membre
Dernière intervention
27 décembre 2008
-1
Merci
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

Inarius
Messages postés
127
Date d'inscription
samedi 20 décembre 2008
Statut
Membre
Dernière intervention
11 mars 2009
19
-1
Merci
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]

Ici initialize ne sert à rien
A plus.