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 Sub

Salut :

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 Sub

Je 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

Rechercher des sujets similaires à "probleme sheet xxx select"