Problème avec Sheet("xxx").Select
Bonjour à tous,
dans mon code, je suis amené à sélectionner successivement plusieurs feuilles pour écrire dans des cellules.
Seulement les deux dernières écritures ne se font pas (les deux dernières de la liste nameclient et nameseller).
Je ne comprends pas pourquoi.
Si quelqu'un à quelques minutes pour un débutant comme moi ca serait super !
Merci
Private Sub transaction_ok_Click()
Dim verifclient, verifseller As Integer
Dim nameclient, nameseller As String
If Me.addautomatically.Value = True Then
Sheets("CLIENTS").Select
nblinesclients = Range("A65536").End(xlUp).Row
For i = 2 To nblinesclients
If Cells(i, 1) = clientid.Value Then
nameclient = Cells(i, 3)
End If
Next
Sheets("SELLERS").Select
nblinessellers = Range("A65536").End(xlUp).Row
For i = 2 To nblinessellers
If Cells(i, 1) = sellerid.Value Then
nameseller = Cells(i, 3)
End If
Next
End If
Sheets("TRANSACTIONS").Select
For i = 1 To 10000
If Cells(i, 1) <> "" Then newrow = i + 1
Next
If newrow = "2" Then Cells(newrow, 1) = "1" Else Cells(newrow, 1) = Cells(newrow - 1, 1) + 1
tdate = tday.Value & "/" & tmonth.Value & "/" & tyear.Value
Cells(newrow, 2) = tdate
Cells(newrow, 3) = clientid.Value
Cells(newrow, 4) = sellerid.Value
Cells(newrow, 5) = qty.Value
Cells(newrow, 6) = total.Value
Cells(newrow, 7) = nameclient
Cells(newrow, 8) = nameseller
End SubSalut :
faire un essai avec nameseller.value pour voir.
Ca ne fonctionne pas, ca a mis un message d'erreur
bonjour a vous
je pense que tu a oublié une déclaration de la variable
nblinessellers
autrement précise ton erreur, a quelle ligne , n° d'erreur etc... précision = clarté d'explication
Pascal
Bonjour,
selon moi, s'il n'y a rien de copié, c'est que le client et le vendeur ne sont pas trouvés.
J'ai modifié ton code pour afficher un message dans ce cas. j'ai également fait quelques changements qui doivent rendre ton code plus efficace.
Private Sub transaction_ok_Click()
Dim verifclient, verifseller As Integer
Dim nameclient, nameseller As String
nameclient=""
nameseller=""
If Me.addautomatically.Value = True Then
With Sheets("CLIENTS")
nblinesclients = .Range("A65536").End(xlUp).Row
For i = 2 To nblinesclients
If .Cells(i, 1) = clientid.Value Then
nameclient = .Cells(i, 3): Exit For
End If
Next
If nameclient = "" Then MsgBox "client " & clientid & "non trouvé"
End With
With Sheets("SELLERS")
nblinessellers = .Range("A65536").End(xlUp).Row
For i = 2 To nblinessellers
If .Cells(i, 1) = sellerid.Value Then
nameseller = .Cells(i, 3): Exit For
End If
Next
If nameseller = "" Then MsgBox "seller " & sellerid & "non trouvé"
End With
End If
With Sheets("TRANSACTIONS")
newrow = .Range("a65536").End(xlUp).Row + 1
If newrow = 2 Then .Cells(newrow, 1) = 1 Else .Cells(newrow, 1) = .Cells(newrow - 1, 1) + 1
tdate = tday.Value & "/" & tmonth.Value & "/" & tyear.Value
.Cells(newrow, 2) = tdate
.Cells(newrow, 3) = clientid.Value
.Cells(newrow, 4) = sellerid.Value
.Cells(newrow, 5) = qty.Value
.Cells(newrow, 6) = Total.Value
.Cells(newrow, 7) = nameclient
.Cells(newrow, 8) = nameseller
End With
End SubJe vais essayer ça tout de suite ! Merci bcp !
Mais je ne comprends pas qq chose : pourquoi mets-tu des points devant certaines variables ? Genre .Cells(i,1) par exemple.
Merci
bonjour,
l'utilisation des points est liée à l'utilisation de l'instruction with.
with sheets("xyz") indique que dans les lignes qui suivent et jusqu'à l'instruction end with, chaque fois que l'on aura une propriété, un objet ou une méthode qui sera précédé d'un point, il s'agira d'une méthode,d'un objet ou d'une propriété de cet objet précédé de cette instruction with.
par exemple pour faire référence à la cellule 1,1 de la feuille "feuil1"
tu peux écrire
worksheets("feuil1").cells(1,1)=1
worksheets("feuil1").cells(1,2)=3
worksheets("feuil1").cells.clearcontents
tu peux t'éviter la répétition de worksheets("feuil1") en utilisant with
with worksheets("feuil1")
.cells(1,1)=1
.cells(1,2)=3
.cells.clearcontents
end with