Conditions IF à adapter

Bonjour le Forum :)

Je reviens vers vous car j'ai du mal a adapter une conditions crée par un collègue de se forum Ausecour que je remercie d'ailleurs

en fait , ma conditions me sert a dédoublé une ligne que SI le compte TVA 10 % "445720" apparait en recopiant la ligne exactement du compte client et qui change juste le libellé de 20% en 10% qui l'a réussi grâce a ce code

voici le fichier

10testmacro.xlsm (17.16 Ko)

Les lignes ROUGES et Oranges sont les lignes dédoublé grâce a ce code ci dessous ou dans le fichier ci-dessus

Sub test()
Dim tableau
Dim ligAv35 As Integer
Dim recherche As String

tableau = Range("A1").CurrentRegion.Value2
recherche = "445720"

For i = UBound(tableau, 1) To LBound(tableau, 1) Step -1
    If CStr(tableau(i, 3)) = recherche Then
        Range("A" & ligAv35).EntireRow.Insert
        Range("A" & ligAv35, "F" & ligAv35).Value2 = Range("A" & ligAv35 + 1, "F" & ligAv35 + 1).Value2
        Range("F" & ligAv35) = Replace(Range("F" & ligAv35 + 1), "20%", "10%")
    ElseIf tableau(i, 3) Like "35*" Then
        ligAv35 = i
    End If
Next i
End Sub

Mais en faite il y a eu un dernier changement

quand la ligne est dédoublé dans la colonne "débit" il ne faut pas que ca recopie la valeurs correspondante au nom du client "35003VUITTENS qui est "7300" mais cela dois m'afficher la somme des tva 10% et 20%

EX : Ligne rouges : au départ cela m'affiche "7300" qui correspond au nom 353003VUITTENS

mais cela dois afficher pour la tva 10% la somme des montants de comptes 706400 et 445720(5173.72 + 517.37) dans la colonne débit regarder la formule dans R18 et R19

Lignes oranges ET POUR LES 20% la somme des montants de comptes 706500 et 445722 (1340.76 + 268.15) dans la colonne débit

si vous avez des questions je reste en ligne

Bonjour Dragz,

Si les séquences de 5 lignes sont toujours dans le même ordre (70640, 70650, 445720, 445722 et 35xxxxxxxx) ...

Un essai ...

ric

8testmacrov2.xlsm (23.68 Ko)

Merci pour votre reponse cela fonctionne j'essaye de comprendre comment vous avez fait

:)

Bonjour Dragz,

Sub MAcroInsertion()
   Dim i As Integer, J As Integer      ' déclarer les variables

   Application.ScreenUpdating = False  ' geler temporairement l'affichage pour augmenter la rapidité d'exécution

   dlig = Cells(Rows.Count, "A").End(xlUp).Row  ' trouver la dernière ligne du tableau (basé sur la colonne A)

   For i = 2 To dlig    ' boucler de la 1re ligne de données jusqu'à la dernière

      If Cells(i, "C") = "445720" Then    ' si le numéro est trouvé en colonne C

            ' boucle pour trouver le numéro commençant par 35 sur les lignes plus basses
            For J = i To dlig

            If Cells(J, "C") Like "35*" Then    ' si trouvé en colonne C

               ' teste si les lignes (valeur de J et J+1) commencent par 35
               ' cela indiquerait que le traitement a déjà été fait, donc mettre fin au traitement
               If Cells(J, "C").Value = Cells(J + 1, "C").Value Then Exit For

               ' sinon, insérer une ligne
               Rows(J).Insert

               ' Copier la ligne en dessous (J+1) sur la ligne (valeur de J)
               Range("A" & J & ":G" & J).Value = Range("A" & J + 1 & ":G" & J + 1).Value

               ' remplacer le 20% par 10% dans le libellé de la colonne F
               Cells(J, "F") = Replace(Cells(J, "F"), "20%", "10%")

               ' additionner E 4 lignes au-dessus (7064400) avec E 2 lignes au-dessus (445720)
               ' puis, écrire le résultat en E (ligne 10%)
               Cells(J, "D").Value = (CDbl(Cells(J - 4, "E").Value + CDbl(Cells(J - 2, "E").Value))) 

               ' additionner E 3 lignes au-dessus (7064500) avec E 1 ligne au-dessus (445722)
               ' puis, écrire le résultat en E (ligne 20%)
               Cells(J + 1, "D").Value = (CDbl(Cells(J - 3, "E").Value + CDbl(Cells(J - 2, "E").Value))) 

               ' 1 ligne a été insérée, donc la dernière ligne a changé, on incrémente
               dlig = dlig + 1

               ' on sort de la 2e boucle pour retourner à la 1re afin de continuer sur les lignes suivantes
               Exit For

            End If   ' mettre fin à la 2e condition

         Next J      ' aller à la valeur du J suivante

      End If         ' mettre fin à la 1re condition

   Next i            ' aller à la valeur du i suivant pour continuer sur les lignes suivantes

End Sub              ' terminer la procédure

ric

WOoow merci énormément pour vos commentaires certaines lignes je ne comprenais pas :)

ric

re , ric

jai un petit soucis sur la macro c'est que quand ca calcule les sommes la virgule se met 1 place avant Pourquoi ? ex Pour VUITTENS la somme des tva 10% font 5691.09 et ca affiche 569.109 pareil pour les 20%

Bonjour DragZ,

Ouula! Ouula! ... c'est une grosse confusion de ma part ... je croyais que tu voulais 10% ou 20% de la somme des 2 montants ...

Donc ... enlève simplement la multiplication ...

Cells(J, "D").Value = (CDbl(Cells(J - 4, "E").Value + CDbl(Cells(J - 2, "E").Value))) * 0.1
'devient
Cells(J, "D").Value = (CDbl(Cells(J - 4, "E").Value + CDbl(Cells(J - 2, "E").Value))) 

' et 
Cells(J + 1, "D").Value = (CDbl(Cells(J - 3, "E").Value + CDbl(Cells(J - 2, "E").Value))) * 0.2
'devient
Cells(J + 1, "D").Value = (CDbl(Cells(J - 3, "E").Value + CDbl(Cells(J - 2, "E").Value))) 

Je suis vraiment désolé de ma méprise ...

ric

Vous excusez pas vous m'aidez déjà ENORMEMENT

Bonjour DragZ,

Ne me dis pas "Vous" ... j’ai l’impression d’être vu ... souffrir de schizophrénie ...

ric

Rechercher des sujets similaires à "conditions adapter"