Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Fusion de deux sheets

kiekeboe76

XLDnaute Nouveau
Bonjour,

Après avoir chercher sur ce forum pendant deux jours une réponse à ma question, je capitule!!

...et je me permets donc de vous soumettre ma question :

j'ai une feuille avec trois colonnes : nom, prénom, date de naissance
Une deuxième avec trois colonnes : nom, prénom, lieu de naissance

j'aimerais fusionner ces deux feuilles pour en obtenir avec quatre colonnes : nom, prenom, date de naissance, lieu de naissance.

Précisions :

- le nombre d'entrées dans la feuille1 ne correspond pas au nombre d'entrées
dans la feuille2
- la fusion doit se faire su base du nom et du prénom

(voir exemple en PJ ci-dessous)

Ma feuille contient pres de 30.000 lignes et donc, il ne m'est pas possible de le faire 'manuellement'.

Any idea?

Merci d'avance
 

Pièces jointes

  • test.xls
    14.5 KB · Affichages: 68
  • test.xls
    14.5 KB · Affichages: 78
  • test.xls
    14.5 KB · Affichages: 76

job75

XLDnaute Barbatruc
Re : Fusion de deux sheets

Bonjour kiekeboe76, bienvenue sur XLD,

Une solution, fichier ci-joint.

Edit 1 : salut pierrejean tu utilises 2 tableaux, je ne me suis pas cassé la tête j'en utilise 4...

Edit 2 : tiens, j'ai essayé ça à la fin et ça marche, amusant :

Code:
.Range("A1:D" & i) = Application.Transpose(Array(tablo1, tablo2, tablo3, tablo4))

A+
 

Pièces jointes

  • test.xls
    43 KB · Affichages: 75
  • test.xls
    43 KB · Affichages: 88
  • test.xls
    43 KB · Affichages: 72
Dernière édition:

kiekeboe76

XLDnaute Nouveau
Re : Fusion de deux sheets

Waow,
Merci Job75,merci pierrejean !!

c'est exactement ce à quoi je voulais arriver!

Question subsidiaire : si maintenant, je rajoute des colonnes ds le feuilles 1 et 2 (prenons, pour l'exemple, 2 colonnes ds la sheet1 et 3 ds la sheet2)

Quels sont les codes que je dois modifier?

Merci
 

job75

XLDnaute Barbatruc
Re : Fusion de deux sheets

Re,

Question subsidiaire : si maintenant, je rajoute des colonnes ds le feuilles 1 et 2 (prenons, pour l'exemple, 2 colonnes ds la sheet1 et 3 ds la sheet2)

Quels sont les codes que je dois modifier?

D'abord il faut avoir bien compris comment fonctionne la macro.

Ensuite dans mon code, c'est simple : il y a autant de tableaux (tablo1, tablo2...) que de colonnes dans le tableau de synthèse.

Donc si l'on ajoute des colonnes, il faut :

- déclarer les nouveaux tableaux (tablo5, tablo6...)

- ajouter des lignes de codes aux endroits où l'on calcule les "tablo"

- compléter à la fin le Array et modifier la plage de restitution.

A+
 

job75

XLDnaute Barbatruc
Re : Fusion de deux sheets

Bonsoir Staple

Merci pour l'info, je me disais aussi que cette petite acrobatie sortait de l'ordinaire

Je laisse lâchement ceux qui ont Excel2000 se débrouiller : il suffit de renseigner chaque colonne de restitution avec le tablo idoine transposé.

A+
 

Staple1600

XLDnaute Barbatruc
Re : Fusion de deux sheets

Re

Tu veux dire ainsi ?

Code:
With Sheets("Sheet3")
    .Range("A:D").ClearContents
    .Range("A1:A" & i) = Application.Transpose(tablo1)
    .Range("B1:B" & i) = Application.Transpose(tablo2)
    .Range("C1:C" & i) = Application.Transpose(tablo3)
    .Range("D1:D" & i) = Application.Transpose(tablo4)
    .Range("A:D").Sort Key1:=.Range("A1"), Order1:=xlAscending, Key2:=.Range("B1"), Order2:=xlAscending, Header:=xlYes
End With

Si oui, cela plante toujours
 

job75

XLDnaute Barbatruc
Re : Fusion de deux sheets

Re Staple,

Oui c'est bien ça, mais alors c'est une autre paire de manche, et c'est étrange.

Soit je revois le code pour redimensionner chaque tablo chaque fois qu'il est renseigné. C'est bien lourd, je n'aime pas ça.

Soit, quitte à ralentir la macro à la fin, essaie donc :

Code:
.Range("A1:D50000") = Application.Transpose(Array(tablo1, tablo2, tablo3, tablo4))

Et si ça ne va pas essaie aussi avec ta méthode.

A+
 

job75

XLDnaute Barbatruc
Re : Fusion de deux sheets

Re encore,

Ou alors faudrait-il expliciter la propriété Value sur Excel 2000 ???

Code:
.Range("A1:D" & i)[COLOR="Red"].Value[/COLOR] = Application.Transpose(Array(tablo1, tablo2, tablo3, tablo4))

A+
 

job75

XLDnaute Barbatruc
Re : Fusion de deux sheets

Bonjour le fil, le forum,

Voici une 2ème version plus orthodoxe.

Elle utilise un seul tableau à 2 dimensions, redimensionné à chaque fois.

C'est un tableau transposé, car seule la 2ème dimension peut être redimensionnée.

Voir si maintenant ça passe sur Excel 2000.

A+
 

Pièces jointes

  • test(2).xls
    42.5 KB · Affichages: 65
  • test(2).xls
    42.5 KB · Affichages: 69
  • test(2).xls
    42.5 KB · Affichages: 68

Staple1600

XLDnaute Barbatruc
Re : Fusion de deux sheets

Bonjour job75

L'orthodoxie a payé

Excel 2000 accepte ton code sans douleur

PS: en ajoutant .Value, cela plante toujours (avec ton premier code)
 
Dernière édition:

kiekeboe76

XLDnaute Nouveau
Re : Fusion de deux sheets

Salut... bien dormi?

je vois que certains ont bossé dur! ) Merci pour ces infos...

Je joins une transformation de mon fichier de départ :

- 3 'critères' de tri (au lieu de deux initialement),
- 3 feuilles 'sources'

on ne sait jamais, ça peut servir peut-être servir à qqn....

Juste une dernière question (qui sort un peu du sujet de ce post, je l'avoue) mais bon, au moins, on aura alors une belle fusion bien 'propre' )

Comment supprimer les bordures des 4 premières colonnes ds la sheet4 ou les étendre à toutes les colonnes (jusque L)?

Merci
 

Pièces jointes

  • test.zip
    14.4 KB · Affichages: 41
  • test.zip
    14.4 KB · Affichages: 30
  • test.zip
    14.4 KB · Affichages: 38

Discussions similaires

Réponses
5
Affichages
652
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…