DragZ
-
3 oct. 2022 à 16:55
f894009
Messages postés17253Date d'inscriptiondimanche 25 novembre 2007StatutMembreDernière intervention15 mars 2025
-
5 oct. 2022 à 17:05
Bonjour le forum
j'ai déjà effectué une demande sur https://forum.excel-pratique.com/exc...detecte-176253
Aujourd'hui ca fait 2 semaine que je suis sur une macro qu'on me demande a chaque fois des modifications !
En faite j'ai un export de données a intégrer dans un logiciel comptable .
MAINTENANT je dois faire une macro que Selon le compte client détecté "706400" qui correspond a la TVA 10% et "445720" son HT 10% et
" 706500" la TVA 20 % et son HT 20% "445722"qui se présente comme ceci sur tous mes dossiers
Sur ces lignes les deux comptes sont présents avec une dernière ligne "le nom du client"
et en gros ma macro doit détecté si un compte Tva est détecté (ou les deux ) il faut afficher le mot TVA 10% ou TVA 20% après le nom du client et si il y a les deux Cela doit dédoublé la ligne du compte client comme ci-dessous
par contre quand cela dédouble la ligne pour la Tva 10%
Ex: on fait la somme des comptes correspondant (706400 + 445720) en gros (3908.13 + 390.78 = 4298.91) pour la tva 10 %et pour les 20% (706500 + 445722) qui est (142.58 + 28.51 = 171.09)
mais des fois il se pourrait que une seul compte apparait comme ci-dessous et cela doit affiché Tva 20% après le nom de facture mais sans dédoublé de ligne
ou pour les 10%
Voici le code d'un des collègues du forum qui ma énormément aidé que j'essaye d'adapter mais sans plus et un fichier avec des infos anonymes crée de toute pièces
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 "0*" 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 multiplier par 0.1 (10%), écrire le résultat en E de 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 multiplier par 0.2 (20%), écrire le résultat en E de 20%
Cells(J + 1, "D").Value = (CDbl(Cells(J - 3, "E").Value + CDbl(Cells(J - 1, "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
VOici un fichier d'ex sur ce site comme j'ai deja demandé une solution : https://forum.excel-pratique.com/excel/ajouter-des-lignes-si-compte-client-detecte-176253 Windows / Chrome 105.0.0.0
f894009
Messages postés17253Date d'inscriptiondimanche 25 novembre 2007StatutMembreDernière intervention15 mars 20251 713 3 oct. 2022 à 17:50
Bonjour,
Clement, Sophie et froid sont ou a l'origine vu que vous parlez de dossiers?
A quoi ressemble la feuille de depart avant l'insertion de ligne car sur vore premiere image y a 0Clement, un cumul et pas de tva inscrite avant derniere colonne?
f894009
Messages postés17253Date d'inscriptiondimanche 25 novembre 2007StatutMembreDernière intervention15 mars 20251 713 5 oct. 2022 à 11:58
Bonjour,
Le code est pret. Je regarde pour le traitement d'erreur et la relance sur erreur de facon a ne pas rajouter des lignes si deja fait ou il vous faudra faire une copie avant de lancer
4 oct. 2022 à 11:44
Bonjour
merci pour votre réponse :)
voici mon fichier de base il se présente comme ceci