erreur 1004 non definie

fradouan

XLDnaute Junior
Bonsoir a toutes et a tous
apres execution de ce code (qui s'execute bien)

Private Sub CommandButton1_Click()
Dim i%

If QTE.Value = '' Then
MsgBox ('Saisir une Qté valide ou cliquer sur sortir')
Exit Sub
End If
Application.ScreenUpdating = False
With Sheets('RECAPE')
i = .Range('A65536').End(xlUp).Row + 1
.Range('A' & i) = ARTICLE.Value
.Range('B' & i) = DTE.Value
.Range('C' & i) = FOURNISSEUR.Value
.Range('D' & i) = REF.Value
.Range('E' & i) = PU.Value
.Range('F' & i) = QTE.Value
.Range('G' & i) = PU.Value * QTE.Value
.Range('H' & i) = Val(STOCK) + Val(QTE)
Columns('A:H').AutoFit
End With
ARTICLE.Value = ''
DTE.Value = ''
FOURNISSEUR.Value = ''
REF.Value = ''
PU.Value = ''
QTE.Value = ''
Application.ScreenUpdating = True
End Sub

la procedure suivante genere le code erreur 1004 a la ligne
STOCK = Worksheets('ARTICLES').Cells(i + 1, 5).Value


Private Sub ARTICLE_Change()
' Envoye la poosition de la liste deroulante dans i
i = ARTICLE.ListIndex
' Donne à la textbox la valeur correspondant au nom
DTE = Date$
STOCK = Worksheets('ARTICLES').Cells(i + 1, 5).Value
End Sub
j y comprend plus rien
merci de votre aide
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir fradouan,

On peut imaginer le scénario suivant :
[ol][ul][li]Tu cliques sur le CommandButton1[/li]
[li]Ca modifie la propriété Text de la liste ARTICLE en '' (sa propriété Listindex devient -1 si tu n'as pas d'élément vide dans cette liste)[/li]
[li]Cette modification déclenche l'évènement Change() de la liste ARTICLE[/li]
[li]Dans cet évènement, 'i' vaudra donc '-1'[/li]
[li]et comme '-1' + 1 est égale à zéro, [/li]
[li]Ton expression : 'STOCK = Worksheets('ARTICLES').Cells(i + 1, 5).Value' donne une erreur ![/li][/ul][/ol]
J'espère t'avoir donné une piste...

Cordialement,
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Radouan et myDearFriend :)

Pour éviter le genre d'erreur, malheureusement possible, à laquelle mDF fait allusion, je place une variable au niveau du module (ou de l'USF ou de la feuille) :

Dim InChange As Boolean

et, à l'entrée des procédures événementielles, je fais un test :

If Not InChange Then
  InChange = True
  ' Le code
  InChange = False
End If


Voilà :)

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 487
Messages
2 088 825
Membres
103 971
dernier inscrit
abdazee