Erreur '1004' Variable Long reste égale à Zero

Bonjour,

Je me permet de faire appel à vous car après maintes modifications sur mon code la macro ne fonctionne toujours pas, et la stagiaire débutante en vba que je suis commence à désespérer.

Je me suis aperçue que la variable l qui devrait être égale à 796 puisque ma variable dern_ligne prend bien la valeur 797 reste égale à zéro.

Peut-être ai-je mal déclaré ma variable ?

Avant de lancer la macro celle ci prenait bien la valeur 796 mais une fois lancée cela n'était plus le cas.

Le message d'erreur suivant s'affiche: " Erreur d'exécution '1004': Erreur définie par l'application ou par l'objet."

Le plus bizarre est que la macro a bien fonctionné une première fois puis plus du tout.

Voici le code en question:

Sub exercice()

Dim i As Integer
Dim l As Long
Dim j As Long
Dim classeur As String
Dim feuil As Worksheet
Dim dern_ligne As Long

'classeur = ActiveWorkbook.Name
'feuil = Worksheets("DDPE Consolidé")
'feuil.Activate
With ActiveSheet
dern_ligne = Range("B10000").End(xlUp).Row
l = dern_ligne - 1

For l = l To 0 Step -1

 'For i = 5 To ActiveSheet.Range("A1").End(xlDown).Row Step 1
       i = 5

       Do While Range("A" & i).Value <> ""
            If ActiveSheet.Range("C" & l).Value >= ActiveSheet.Range("A" & i).Value Then
            If ActiveSheet.Range("C" & l).Value <= ActiveSheet.Range("B" & i).Value Then
                ActiveSheet.Range("B" & l).Value = ActiveSheet.Range("E" & i).Value
            End If
            End If
      i = i + 1
      Loop

 'Next i

Next l

End With

End Sub

Merci d'avance !!

bonjour,

Tu as une erreur car tu as écrit :

For l = l To 0 Step -1

...Par suite, à la fin l prend la valeur zéro et

ActiveSheet.Range("C" & zéro).Value >= ...

ça VBA il aime pas du tout...

PAr ailleurs, si je peux te donner quelques conseils destiné aux débutants :

à l'exception de i, j, k que tu peux utiliser tant que tu veux comme compteur de boucles :

For i = 1 to 1000

Evite d'utiliser des noms de variables en une seule lettre. (et surtout pas le "L" minuscule qu'on peut facilement confondre avec le chiffre 1

iR convient très bien pour une variable de ligne

iC pour une variable Colonne

iLR (iLastRow) pour une variable de dernière ligne

Les noms de variable trop longs nuisent à la lisibilité du code (C'est d'ailleurs une technique d'obfuscation) pour empêcher les intrus de comprendre le code...

A+


Observation :

Tu as écris With ActiveSheet

mais par la suite tu te répètes :

            If ActiveSheet.Range("C" & l).Value >= ActiveSheet.Range("A" & i).Value Then
            If ActiveSheet.Range("C" & l).Value <= ActiveSheet.Range("B" & i).Value Then
                ActiveSheet.Range("B" & l).Value = ActiveSheet.Range("E" & i).Value

Ceci aurait été bien préférable :

            If .Range("C" & l).Value >= .Range("A" & i).Value Then
            If .Range("C" & l).Value <= .Range("B" & i).Value Then
                .Range("B" & l).Value = .Range("E" & i).Value

A+

Bonjour à tous

A tester le code épuré pour un module

Option Explicit
Sub exercice()
Dim i As Integer
Dim dligne As Integer
Sheets(1).Activate
    With ActiveSheet
        dligne = Range("B5").End(xlDown).Row
            For i = 5 To dligne
                    If Range("A" & i).Value <> "" And Range("C" & i).Value >= Range("A" & i).Value And _
                       Range("C" & i).Value <= Range("B" & i).Value Then
                       Range("B" & i).Value = Range("E" & i).Value
                    End If
            Next i
    End With
End Sub

Bonjour à tous,

et un salut particulier à Galopin que je remercie d'avoir enrichi ma culture avec obfuscation.

Je n'en reviens d'ailleurs pas d'avoir ignoré ce terme : je ne pratique certes pas quand j'écris du code — sauf involontairement — mais le je dis tout et vous ne savez rien me parle plutôt pas mal !

Bonne journée.

Merci beaucoup pour vos réponses !

Excel n'affiche plus de message d'erreur lorsque je lance la macro, mais celle-ci ne fonctionne quand même pas, je vais m'aider des conseils que vous m'avez donnés et continuer à chercher.

Sub exercice()

Dim i As Integer
Dim dligne As Integer
Dim ligne As Integer

Sheets("DDPE Consolidé").Activate

    With ActiveSheet
        dligne = Range("B10000").End(xlUp).Row
        ligne = dern_ligne - 1
        For ligne = ligne To 2 Step -1
            For i = 5 To dligne
                    If Range("A" & i).Value <> "" And Range("C" & ligne).Value >= Range("A" & i).Value And _
                       Range("C" & ligne).Value <= Range("B" & i).Value Then
                       Range("B" & ligne).Value = Range("E" & i).Value
                    End If
            Next i
            Next ligne
    End With

End Sub

Re,

Si tu fais un copier/coller de mon code, ça doit fonctionner

tu mélanges la variable "i" ?

If Range("A" & i).Value <> "" And Range("C" & ligne).Value >= Range("A" & i).Value And _

Range("C" & ligne).Value <= Range("B" & i).Value Then

Range("B" & ligne).Value = Range("E" & i).Value

End If

M12 a écrit :

Re,

Si tu fais un copier/coller de mon code, ça doit fonctionner

tu mélanges la variable "i" ?

If Range("A" & i).Value <> "" And Range("C" & ligne).Value >= Range("A" & i).Value And _

Range("C" & ligne).Value <= Range("B" & i).Value Then

Range("B" & ligne).Value = Range("E" & i).Value

End If

Ça a bien fonctionné, merci beaucoup tu m'enlèves une épine du pied !

Rechercher des sujets similaires à "erreur 1004 variable long reste egale zero"