Problème de boucle

Fermé
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013 - 26 févr. 2013 à 11:58
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013 - 26 févr. 2013 à 12:40
Salut tout le monde!

Alors voilà, il ne me reste plus qu'une petite maccro pour finir de traiter les données que j'ai. Bien entendu cette macro me prend pas mal la tête depuis maintenant une journée.

J'envoie d'abords le code et après je l'explique:

Sub répartir_les_consos()

Dim p As Integer
Dim q As Integer

        Application.ScreenUpdating = False


For p = 21591 To 2 Step -1
q = p - 8
'si les deux cellules sont égales, alors

    If Application.WorksheetFunction.And(Cells(p, 2) = Cells(q, 2), Cells(p, 4) = Cells(q, 4)) Then
        Cells(p, 6) = Cells(p, 6) + Cells(q, 5) * 0.5
        Range("q:q").Delete
 
End If

Next p

End Sub



Le but de ce truc c'est que si deux cellules sont égales, alors une cellule prend pour valeur la moitié d'une cellule en plus de sa valeur initiale.

Ce qui m'embête c'est que ce machin tourne mais ça ne fait strictement rien. C'est pour ça que je pense que c'est une erreur à la *** du style ma boucle sur p n'est pa bien faite ou autre. (en fait c'est plus chiant quand on cherche le problème que quand on cherche la solution)

Voilà j'vous remercie d'avance.




1 réponse

Bonjour,

1) si tu mets Application.ScreenUpdating = False au debut de la macro, tu dois mettre Application.ScreenUpdating = True à la sortie

2) tu peux ecrire tout simplement
If (Cells(p, 2) = Cells(q, 2)) And (Cells(p, 4) = Cells(q, 4)) Then

3) tu ecrits q = p - 8
si p<=8 alors q<=0 et tu auras une erreur.

4) Pourquoi supprimer la colonne "Q" à chaque tour de boucle?

A+
0
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013
26 févr. 2013 à 12:29
Olala!

primo, écrire:
 Range("q:q") 

Ca correspond pas à la ligne? Je voudrais supprimer la ligne moi...

Deuxio,merci pour le screen update j'avais zappé.

tertio, pour l'instant ça marche mais en effet ça me supprime pas les lignes. (je veux supprimer celles dont la cellule qui m'intéresse s'ajoute à une autre cellule.)

Ca fait pas mal de boulette par ligne de code tout ça,^^

Merci, ça m'aide bien ta réponse.
0
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013
26 févr. 2013 à 12:40
Alors, voilà ou j'en suis, ce code fonctionne, mais assez mal, il m'a supprimé quelques lignes mais soit il n'a pas tout supprimé, soit il n'as pas supprimé les bonnes lignes. voici le code

Sub répartir_les_consos()

Dim p As Integer
Dim q As Integer

        Application.ScreenUpdating = False


For p = 21599 To 9 Step -1
q = p - 8
'si les deux cellules sont égales, alors
Cells(p, 6) = Cells(p, 5) / 2

    If Cells(p, 2) = Cells(q, 2) And Cells(p, 4) = Cells(q, 4) Then
        Cells(p, 6) = Cells(p, 6) + Cells(q, 5) * 0.5
        Cells(q, 6).EntireRow.Delete Shift:=xlUp
 
End If

Next p
        Application.ScreenUpdating = True

End Sub



Voilà, j'sais pas trop pourquoi il me supprime pas tout ce que je veux.
J'crois que c'est en supprimant la ligne, du coup ça me décale mes lignes et il me teste pas tout.
Je cherche de ce côté la.
0