Vba: extraction de l'union (sens mathématique) de deux feuilles

Résolu
deub-deub Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis encore novice en vba , ça fait 2 jours que j'essaye de coder , mais sans succès, la situation suivante: (fichier ci-joint ci-dessous)

je veux que dans la feuille Var , il y aie l'extract de l'union des feuilles Prog1 et Prog2 : je m'explique: je veux que la macro compare les deux feuilles Prog1 et Prog9 , qu'elle copie tout d'abord les lignes communes à Prog1 et Prog9 ensuite les lignes présentes dans prog1 et pas prog9 et enfin les lignes présentes dans prog9 et pas prog1.

colonne 5 de Var = Coût de Prog1
colonne 6 de Var = Coût de Prog9
colonne 7 de Var = Colonne 5 - Colonne 6


J'ai essayé une solution bête et longue mais qui n'a rien donné : j'ai codé de sorte à ce que sur Var j'aie les lignes présentes dans prog1 et pas prog9 d'un coté puis es lignes présentes dans prog9 et pas prog1 d'un autre, mais je me retrouvais avec 2 fois les lignes communes à Prog1 et Prog9 . Il me suffisait donc juste de supprimer les doublons. Mais la macro prenait 20 minutes à compiler sans donner de résultats !!!! :s

S'il vous plaît aidez-moi !!! Je suis à bout !!!!! :s !!!!!

https://www.cjoint.com/c/CKppeIHahfY

Sur ce sujet vous trouverez un début de macro que j'ai essayé d'utiliser mais sans résultat non plus ( les autres macros ressemblaient à celle-ci) !!!!


Je vous en remercie d'avance !!!!!!!!!!!!

6 réponses

deub-deub Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
il y'a quelqu'un ?!!!! je vous en prie !!!!!
0
Boisgontierjacques Messages postés 175 Date d'inscription   Statut Membre Dernière intervention   64
 
Bonjour,


Pour la rapidité, utiliser les tableaux et dictionary.

http://boisgontierjacques.free.fr/pages_site/Doublons.htm#Communs2BDBis

Jacques Boisgontier
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Peux tu mettre ton fichier au format excel 2003 (fichier/enregistrer sous/ type ....

Cdlmnt
0
deub-deub Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Désolé ccm81 je n'avais pas d'accès internet ce week end !! voici le fichir version 2003 !!!
https://www.cjoint.com/c/CKskuTUXTDm
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Un essai (sur un fichier réduit)
https://www.cjoint.com/?3KswjJRxrTf

Cordialement
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
0
deub-deub Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup ccm81 ca mache comme sur des roulettes ! mais est-ce-que tu peux m'expliquer , si ca ne te dérange pas, ce que fait la macro parce que j'ai essayé de la lire mais je n'ai pas réussi à comprendre !
0

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

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Quelques explications et la formule en colonne G
https://www.cjoint.com/?3KumfLdt3fs

Bonne journée
0
deub-deub Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beacoup ccm81 tu me sauves la vie ! Par contre j'aurai une dernière question : comment fais tu pour que T1C et T9C correspondent à la colonne E ?!!

cdlt,
0
deub-deub Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
parce que j'ai essayé d'appliquer la macro à des tableaux plus grands ( 17 colonnes), donc quand j'ai changé le nco et la plage , je compile on me sort une erreur d'incompatibilité de type à la ligne :

Sheets(FV).Range("A" & lideb & ":A" & nTC) = Application.Transpose(TC)
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Le tableau TC
- a t 'il été déclaré sans type (Dim TC)
- est il bien à une seule colonne?
0
deub-deub Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
TC a été déclaré comme suit : Dim TC as long
Mais il n'a pas de souci je ne vais finalement pas utiliser les grands tableaux !!
Par contre dans la macro tu as concaténé toutes les colonnes de A à D en une seule colonne en utilisant "ReDim T1(1 To nbliT1)" , comment je peux faire la même chose en excluant la colonne C de la concaténation ?
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
1. Application.Transpose(TC)
Pas étonnant que le compilateur ait râlé, TC est ici un tableau qui doit être déclaré comme Variant (pour pouvoir le redimensionner en cours d'exécution) et non un entier long
2. il suffit d'exclure la colonne 3 de la boucle
  For co = 2 To nbco - 1
If co <> 3 Then T1(li1) = T1(li1) & ";" & Sheets(FP1).Cells(lideb + li1 - 1, co)
Next co
même chose pour T9

Bonne suite
0