Conditions a plusieurs valeurs sur même colonne

Résolu/Fermé
DragZ - 3 oct. 2022 à 16:55
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 - 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

Nom : Test Macro GML.png Affichages : 31 Taille : 2,6 Ko

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

Nom : Test Macro GML. 2png.png Affichages : 31 Taille : 3,0 Ko

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

Nom : Test Macro GML. 3.png Affichages : 32 Taille : 2,2 Ko

ou pour les 10%

Nom : Test Macro GML. 4.png Affichages : 30 Taille : 2,2 Ko

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

A voir également:

6 réponses

f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701
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?

1

Bonjour 

merci pour votre réponse :)

voici mon fichier de base il se présente comme ceci

0
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701
4 oct. 2022 à 16:44

Re,

 Pas d'importance pour le calcul, mais pour votre export?

Je regarde la chose

1
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701
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

1

bonjour a vous

Je vous remercie Moi même je suis encore dessus en essayant de chercher des solutions 

je vous remercie énormément si vous pouviez m'expliquer comment vous avez fait :) 

:) :) :)

0
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701
5 oct. 2022 à 16:32

Re,

si vous pouviez m'expliquer comment vous avez fait :

Ben comme ca: https://www.cjoint.com/c/LJfoBRNpGjg

Y a pas la partie relance sur erreur

Pour lancer le code: crtl+shift+d

Si vous transposez les procedures dans un autre fichier, pensez a adapter le nom de feuille dans le Module Detail

1

Re, 

tout d'abord merci pour votre travail :) car cela fonctionne et j'arrive a comprendre comment vous avez fait 

mille merci :) :) :)

juste une question si le dossier admettons fais plus de 1000 lignes faut t'il que je change quelque chose ? a part le nom de la feuille ou bien non ?

0
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701 > DragZ
5 oct. 2022 à 17:05

Re,

Le nombre de lignes n'a aucune importance, s'il n'y en pas vous avez un message

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17180 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 février 2024 1 701
4 oct. 2022 à 16:13

Bonjour,

Ok.

Quand j'importe votre fichier CSV, il y a une ligne vide apres les noms de colonnes et pas dans votre image !

0

oui je l'ai supprimer a la main il faut que je la laisse ? 

0
0

Merci 

0