Ajouter des lignes si compte client détecté
Bonjour le forum
Aujourd'hui ca fait 1 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 que ca dédouble 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 tva10et 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
S'il vous plait HELP :/ :/ :/ :/
Bonjour
Pourquoi ce nouveau fil alors que l'autre est toujours en suspens
Si quelqu'un pourrait m'aider s'il vous plait?
Bonjour
J'ai du mal à suivre : la question semble identique ou très proche de l'autre post où a priori la solution te convient.
Peux-tu préciser par rapport à l'autre fil ce qu'il faut modifier. On doit pouvoir adopter les mêmes principes...
EDIT : demande cross postée donc bonne continuation...
Bonjour :)
La différences avec l'autre c'est que la je dois absolument faire en vba une automatisation
j'arrive a extraire les données mais je n'arrive pas a initialisé une macro qui selon le compte client 706500 ou 706400 qui correspond une tva 20 ou 10 ou meme les deux comme ci dessus ( mon fichier se présente comme ca )
il faudrait que ca m'écris le taux de tva correspondant dans la ligne du nom du client comme ceci tout en calculant la somme des montant des tva
EX le compte 706400 est la tva 10% et le compte 445720 est son HT donc da la ligne qui se dédouble "0CLEMENT' la colonne crédit s'affiche 4298.91 et de meme pour les 20%
les comptes 706500 et 445722 s'additionne donnant 171.09 et affichant la tva correspondant dans le libellé
et il se peut aussi que qu'une seule tva s'affiche pour un client
ex comme ci-dessus qui fais la même procédure que dessus
RE
Je croyais que tu avais compris que PowerQuery automatise tout autant que VBA mais manifestement ce ne n'est pas le cas...
Ouai je sais mais j'ai du mal a prendre la mains sur Power query pourtant ca a l'air simple
@DragZ
Je vous invite à relire la charte du forum [A LIRE AVANT DE POSTER]
- Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).
Je clôture donc le sujet ici
Merci de votre compréhension