VBA : Copier un tableau et ajouter des valeurs en fonctions de conditions

YAKA2009

XLDnaute Nouveau
Bonjour,
Je m'explique.
Dans Feuil1 j'ai un tableau dont la longueur peut être variable
J'ai créé une macro pour copier toutes les lignes du tableau.
Là où ça se complique pour moi, il faut agreger les montants dans la colonne 13
si Colonne 3, Colonne 12 et 16, les mêmes valeurs se répentent

Colonne 3 = Dossier
Colonne 12 = (1 = credit , 2 = débit)
Colonne 16 = type de prestation

Donc si pour un même dossier, j'ai plusieurs prestations qui sont en débit ou crédit. Alors dans la feuille 2,
je recopie une seule ligne et j'agrege les montants dans la colonne 13.

J'ai essayé de le faire en faisant d'abord un tri personnalisé puis des macros. La copie des dossiers fonctionne
correctement mais j'ai du mal à agreger les montants quand c'est nécessaire.

Merci pour votre aide.
Je mets en copie le fichier d'exemple, en bleu les colonnes pour les conditions et en vert la colonne 13.
la macro est jointe au fichier.
 

Pièces jointes

  • Exemple regroupement de lignes.xlsm
    32.3 KB · Affichages: 73

kjin

XLDnaute Barbatruc
Re : VBA : Copier un tableau et ajouter des valeurs en fonctions de conditions

Bonjour, Peut-être qu'un simple TCD pourrait résoudre ton pb Je ne vois pas de montant en colonne 13 que tu puisses "agréger" ?!, mais je n'ai sans doute pas compris A+ kjin
 

Pièces jointes

  • yacca.zip
    14.9 KB · Affichages: 54

YAKA2009

XLDnaute Nouveau
Re : VBA : Copier un tableau et ajouter des valeurs en fonctions de conditions

Bonjour kjin,
merci pour ton aide et ton fichier.
Tu as bien compris ma demande, le principe est le même que pour un TCD.
1. Je souhaite faire une macro vba car je n'ai parlé que de la partie qui me pose problème :
les données proviennent d'un fichier plat que je souhaite agréger pour ensuite reconstituer le fichier plat "simplifié". Ce fichier sera ensuite intégré dans une application.

2. Les données ont un format spécifique : pas de séparateur pour les décimales. Il suffit de garder le format tel quel de la Colonne 13 de la Feuil1.
 

bbb38

XLDnaute Accro
Re : VBA : Copier un tableau et ajouter des valeurs en fonctions de conditions

Bonsoir YAKA2009, kjin, le forum,
Une solution par boucle sur le fichier. J’ai retenu, pour écrire les regroupements, la dernière ligne trouvée sur la feuille 1.
Cordialement,
Bernard
 

Pièces jointes

  • Exemple regroupement de lignes v1.xlsm
    45.7 KB · Affichages: 79

YAKA2009

XLDnaute Nouveau
Re : VBA : Copier un tableau et ajouter des valeurs en fonctions de conditions

Bonsoir Maître Bernard,
Merci beaucoup pour ta solution qui répond parfaitement à mes besoins avec un code concis qui va droit au but désiré.
:). Chapeau bas vraiment.

Pour m'aider à progresser pourrais tu STP m'expliquer le principe,
1. Je pense que tu utilises des tableaux ? Je ne comprends pas bien l'enchainement des conditions dans la boucle "for" pourrais tu éclairer ma lanterne ?

2. Ensuite dans la macro "Ecritures" : j'ai compris que tu récupères d'abord les valeurs et que tu les enregistres dans un deuxième temps dans la Feuil2 mais là aussi je ne comprends pas les boucles utilisées pour y arriver.

3. Dernier point, je dois maintenant exporter la Feuil2 dans un fichier .txt en respectant le format du fichier pour chaque colonne:
ex :
position initiale ! position finale ! Longueur ! Type !
1 2 2 Num
3 10 8 Num
11 20 10 Num
21 21 1 Num

ect...
il y a des colonnes plus complexes
ex pour le champs nom et prénom

position initiale ! position finale ! Longueur ! Type !
69 98 30 Texte : sachant que les valeurs sont variables pour le nom et prénom, il faut rajouter
des espaces pour arriver à 30 caractères


position initiale ! position finale ! Longueur ! Type !
40 52 13 Num : les montants font 10 entiers et 3 décimales non signées
On rajoute des zero devant pour faire 13 caractères.

Bernard, cet export est-faisable en adaptant ta macro "Ecritures" pour les 23 colonnes ?
Encore une fois quel que soit ta réponse merci de m'avoir aidé, je vais pouvoir dormir un peu plus tranquille!
 
Dernière édition:

bbb38

XLDnaute Accro
Re : VBA : Copier un tableau et ajouter des valeurs en fonctions de conditions

Bonjour YAKA2009, le forum,
J’ai mentionné des explications sur le code, en espérant qu’elles pourront t’aider. Par contre, je pense pouvoir l’améliorer, en cherchant une autre méthode (j’ai une toute petite idée).
Pour exporter la feuille 2 dans un fichier .txt, je pense qu’il faut créer un autre code. Peux-tu m’indiquer sur le fichier les longueurs de chaque colonne et les positions (j’ai mis un début d’exemple sur la feuille 6). Je vais essayer une approche.
Cordialement,
Bernard
 

Pièces jointes

  • Exemple regroupement de lignes v2.xlsm
    52.4 KB · Affichages: 79
Dernière édition:

YAKA2009

XLDnaute Nouveau
Re : VBA : Copier un tableau et ajouter des valeurs en fonctions de conditions

Bonjour Bernard,
Merci beaucoup pour les commentaires et l'aide sur l'export. Je vais lire attentivement ton code.

Pour l'export, il y a des champs textes et des champs numériques.
La plupart des champs quelque soit leur type peuvent commencer par zero

1. Je t'envoie un fichier Excel avec la description du format du fichier tel qu'il doit être exporté : format fichier.xlsx

2. J'envoie également un exemple de fichier tel qu'il arrive (j'ai modifié qq données par sécurité).
fichier_initial.txt
Merci Bernnard cela m'aide à avancer
:)
 

Pièces jointes

  • format fichier.xlsx
    10.7 KB · Affichages: 66
  • fichier_initial.txt
    31.7 KB · Affichages: 62

Discussions similaires

Réponses
22
Affichages
690

Statistiques des forums

Discussions
311 725
Messages
2 081 945
Membres
101 849
dernier inscrit
florentMIG