Probleme erreur d'execution Excel

Bonjour,

J'ai ce message d'erreur qui s'affiche a chaque fois que je lance ma macro et je ne sais pas comment corriger cela : Erreur d'execution "1004": Erreur definie par l'application ou par l'objet.

Voila ma macro :

Sub tri()

Dim i As Integer

Dim a As Integer

Dim j As Integer

i = 1

While Worksheets("Data").Cells(i, 1) <> ""

i = i + 1

Wend

a = i

For j = 1 To 10

While Worksheets("Data").Cells(i, 1).Value <> j

i = i - 1

Wend

Worksheets("Ref").Cells(j + 1, 3) = Worksheets("Data").Cells(i, 5) & "-" & Worksheets("Data").Cells(i, 3) & "-" & Worksheets("Data").Cells(i, 4)

Worksheets("Ref").Cells(j + 1, 2) = Worksheets("Data").Cells(i, 3)

i = a

Next

End Sub

Voila la ligne ou excel me mets une erreur : While Worksheets("Data").Cells(i, 1).Value <> j

Merci d'avance

Bonjour Ducat03, le forum,

J'ai plusieurs questions : Pourquoi tu écris

a=i

mais que tu utilise

i

dans ta boucle

for

?

Pourquoi

i=i-1

, dans la logique j'aurais mis

a=a-1

mais ca ne fonctionne pas, je n'arrive pas à voir ce que tu veux faire ?

Un dernier détail , vous mettez une boucle for pour "j" de 1 à 10 mais celui-ci ne s'incrémente pas dans la suite et donc restera à un...

Bien cordialement,

Bonjour

Est ce que i peut prendre une valeur nulle ou négative ?

Vous pouvez vérifier en faisant une exécution pas à pas avec la touche F8, et en passant la souris sur la variable i ou en y ajoutant un espion.

Par ailleurs, pouvez vous décrire un quelques mots l'objectif de la macro, car je pense qu'elle peut être écrite différemment. Notamment la boucle While... Wend, dont je ne suis personnellement pas fan !

Un essai, un peu hasardeux :

Sub tri()

Dim Lig As Integer, Nb As Integer

With Sheets("Data")
    For Lig = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
        For Nb = 1 To 10
            If .Cells(Lig, 1).Value = Nb Then
                Sheets("Ref").Cells(Nb + 1, 3) = .Cells(Lig, 5) & "-" & .Cells(Lig, 3) & "-" & .Cells(Lig, 4)
                Sheets("Ref").Cells(Nb + 1, 2) = .Cells(Lig, 3)
            End If
        Next
    Next
End With

End Sub

Bonjour Ducat03, le forum,

J'ai plusieurs questions : Pourquoi tu écris

a=i

mais que tu utilise

i

dans ta boucle

for

?

Pourquoi

i=i-1

, dans la logique j'aurais mis

a=a-1

mais ca ne fonctionne pas, je n'arrive pas à voir ce que tu veux faire ?

Un dernier détail , vous mettez une boucle for pour "j" de 1 à 10 mais celui-ci ne s'incrémente pas dans la suite et donc restera à un...

Bien cordialement,

C’est mon collègue qui a fait la macro, elle marcher très bien avant, j’ai modifier quelques formules et depuis j’ai cette erreur. Je ne suis pas bon en macro je peux donc pas répondre à vos questions..

Un essai, un peu hasardeux :

Sub tri()

Dim Lig As Integer, Nb As Integer

With Sheets("Data")
    For Lig = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
        For Nb = 1 To 10
            If .Cells(Lig, 1).Value = Nb Then
                Sheets("Ref").Cells(Nb + 1, 3) = .Cells(Lig, 5) & "-" & .Cells(Lig, 3) & "-" & .Cells(Lig, 4)
                Sheets("Ref").Cells(Nb + 1, 2) = .Cells(Lig, 3)
            End If
        Next
    Next
End With

End Sub

Je vais tester ça dans la matinée je vous tiens au courant

Explique nous donc à quoi servait l'ancienne et à présent pourquoi as-tu voulu la modifier ? Serait-il possible de demande à ton collègue ?

Un essai, un peu hasardeux :

Sub tri()

Dim Lig As Integer, Nb As Integer

With Sheets("Data")
    For Lig = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
        For Nb = 1 To 10
            If .Cells(Lig, 1).Value = Nb Then
                Sheets("Ref").Cells(Nb + 1, 3) = .Cells(Lig, 5) & "-" & .Cells(Lig, 3) & "-" & .Cells(Lig, 4)
                Sheets("Ref").Cells(Nb + 1, 2) = .Cells(Lig, 3)
            End If
        Next
    Next
End With

End Sub

Sa a l'air de fonctionner, merci

Rechercher des sujets similaires à "probleme erreur execution"