Bonjour à tous !
Je suis nouvellement inscrite sur ce forum, mais j'ai l'habitude de venir y piocher conseils et astuces. D'ailleurs j'en profite pour dire merci pour l'aide !
Voilà, d'habitude je m'en sors, mais là je ne comprends pas. J'ai besoin de vos intuitions.
La partie que j'ai réussi à faire :
J'ai un devis avec des libellés à 4 niveaux (niveau 1 : 1; 2; 3, niveau 2: 1.1; 1.2; 2.1 etc), + une colonne quantité, + une colonne total, + une colonne résultat (cf pj)
. Le principe de la macro en pièce-jointe est le suivant : la macro remonte la colonne 4 jusqu'à ce qu'elle trouve une case non vide (cad un objet de niveau 4). Dans ce cas la macro remonte la colonne 3 à partir de là où elle a trouvé le niveau 4,jusqu'à trouver un niveau 3. Une fois celui-ci trouvée elle enregistre la quantité correspondant à cette ligne.
Elle suit le même processus pour les niveaux 2 et 1 (dans les colonnes 2 et 1).
Quand les valeurs quantités sont trouvées pour les 3 niveaux, la macro les multiplie au total de la ligne du niveau 4 enregistrée précedemment.
La boucle continue jusqu'à arriver au bout.
Là où ça ne marche pas :
Ma macro tourne et marche bien, mais à la fin la macro s'arrête avec une "erreur d'execution '1004'; Erreur définie par l'application ou par l'objet".
Et met en jaune la ligne
Loop Until ((Cells(ligne, 4) = "") And (Cells(ligne, 3) <> ""))
J'ai essayé plusieurs pistes, notamment en mettant à la fin de la ligne un " Or Ligne = 10" pour sortir de la boucle quand ça finit ... Ca ne marche pas plus... Donc j'aimerais bien que ma macro qui marche, sorte "normalement" et non pas par un message d'erreur.
Une idée?
En pj je mets le fichier excel et ci-dessous la copie du corps de ma macro. Merci d'avance !
Sub test()
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim i As Integer
Dim k As Integer
Dim h As Integer
Dim m As Integer
Dim a As Integer
Dim j As Integer
Dim Compteur As Integer
Dim KAM As Integer
Dim n As Integer
Dim ligne As Integer
j = 50
KAM = 50
Do
KAM = KAM - 1
Do
j = j - 1
Loop Until (Cells(j, 4) <> "")
a = j
ligne = a
Do
ligne = ligne - 1
Loop Until ((Cells(ligne, 4) = "") And (Cells(ligne, 3) <> ""))
i = Cells(ligne, 5)
c = ligne
b = c
Do
b = b - 1
Loop Until (Cells(b, 4) = "") And (Cells(b, 3) = "") And (Cells(b, 2) <> "")
k = Cells(b, 5)
d = b
c = d
Do
c = c - 1
Loop Until (Cells(c, 4) = "") And (Cells(c, 3) = "") And (Cells(c, 2) = "") And (Cells(c, 1) <> "")
h = Cells(c, 5)
Cells(j, 7) = Cells(j, 6) * i * k * h
Loop While KAM > 25
End Sub
Je suis nouvellement inscrite sur ce forum, mais j'ai l'habitude de venir y piocher conseils et astuces. D'ailleurs j'en profite pour dire merci pour l'aide !
Voilà, d'habitude je m'en sors, mais là je ne comprends pas. J'ai besoin de vos intuitions.
La partie que j'ai réussi à faire :
J'ai un devis avec des libellés à 4 niveaux (niveau 1 : 1; 2; 3, niveau 2: 1.1; 1.2; 2.1 etc), + une colonne quantité, + une colonne total, + une colonne résultat (cf pj)
. Le principe de la macro en pièce-jointe est le suivant : la macro remonte la colonne 4 jusqu'à ce qu'elle trouve une case non vide (cad un objet de niveau 4). Dans ce cas la macro remonte la colonne 3 à partir de là où elle a trouvé le niveau 4,jusqu'à trouver un niveau 3. Une fois celui-ci trouvée elle enregistre la quantité correspondant à cette ligne.
Elle suit le même processus pour les niveaux 2 et 1 (dans les colonnes 2 et 1).
Quand les valeurs quantités sont trouvées pour les 3 niveaux, la macro les multiplie au total de la ligne du niveau 4 enregistrée précedemment.
La boucle continue jusqu'à arriver au bout.
Là où ça ne marche pas :
Ma macro tourne et marche bien, mais à la fin la macro s'arrête avec une "erreur d'execution '1004'; Erreur définie par l'application ou par l'objet".
Et met en jaune la ligne
Loop Until ((Cells(ligne, 4) = "") And (Cells(ligne, 3) <> ""))
J'ai essayé plusieurs pistes, notamment en mettant à la fin de la ligne un " Or Ligne = 10" pour sortir de la boucle quand ça finit ... Ca ne marche pas plus... Donc j'aimerais bien que ma macro qui marche, sorte "normalement" et non pas par un message d'erreur.
Une idée?
En pj je mets le fichier excel et ci-dessous la copie du corps de ma macro. Merci d'avance !
Sub test()
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim i As Integer
Dim k As Integer
Dim h As Integer
Dim m As Integer
Dim a As Integer
Dim j As Integer
Dim Compteur As Integer
Dim KAM As Integer
Dim n As Integer
Dim ligne As Integer
j = 50
KAM = 50
Do
KAM = KAM - 1
Do
j = j - 1
Loop Until (Cells(j, 4) <> "")
a = j
ligne = a
Do
ligne = ligne - 1
Loop Until ((Cells(ligne, 4) = "") And (Cells(ligne, 3) <> ""))
i = Cells(ligne, 5)
c = ligne
b = c
Do
b = b - 1
Loop Until (Cells(b, 4) = "") And (Cells(b, 3) = "") And (Cells(b, 2) <> "")
k = Cells(b, 5)
d = b
c = d
Do
c = c - 1
Loop Until (Cells(c, 4) = "") And (Cells(c, 3) = "") And (Cells(c, 2) = "") And (Cells(c, 1) <> "")
h = Cells(c, 5)
Cells(j, 7) = Cells(j, 6) * i * k * h
Loop While KAM > 25
End Sub