Fusion de données de plusieurs classeurs

Tahititin

XLDnaute Occasionnel
Bonjour,
Je suis nouveau sur ce forum et complétement novice en programmation VBA. Je travaille en milieu hospitalier et il m'a été demandé de travailler sur une programmation opératoire unique et simple... Explication : J'ai 1 fichier excel mensuel et par spécialité (orthopédie, neurochir, viscéral, ORL, Ophtalmo, stomato, endoscopie...etc) comportant 1 onglet par semaine (4). ces classeurs sont complété au fur et à mesure par 1 secrétaire par spécialité. il faudrait que je puisse arriver à fusionner tous ces classeur pour parvenir à une programmation mensuel incluant toutes les spécialités (pour le régulateur du bloc).
Petite précision, il faudrait que le fichier "synthèse" puisse être mis à jour si les programmation par spécialité évoluent.
Ensuite, le bloc dispose de 9 salles et il faudrait que je arriver (à partir de mon fichier synthse" à une programmation journalière par salle !!!
La structure des fichier est bien entendu identiqueet je voudrais éviter les copier/coller et automatiser tout ça
j'espère avoir été suffisamment clair.

D'avance merci pour votre précieuse aide
 

Leskwal

XLDnaute Occasionnel
Re : Fusion de données de plusieurs classeurs

Bonsoir

Pardon d'insister, mais j'ai vraiment besoin de vous. :confused:

MERCI d'avance :)

Pascal

En fichier joint de quoi répondre à ma question ci-dessus...
 

Pièces jointes

  • PROGRAMME TEST.xls
    46.5 KB · Affichages: 67
  • Test_Création_FF 2.xls
    26.5 KB · Affichages: 50
  • Test_Création_FF.xls
    32.5 KB · Affichages: 61
  • PROGRAMME TEST.xls
    46.5 KB · Affichages: 74
  • Test_Création_FF 2.xls
    26.5 KB · Affichages: 51
  • Test_Création_FF.xls
    32.5 KB · Affichages: 61
  • PROGRAMME TEST.xls
    46.5 KB · Affichages: 68
  • Test_Création_FF 2.xls
    26.5 KB · Affichages: 47
  • Test_Création_FF.xls
    32.5 KB · Affichages: 59

Modeste

XLDnaute Barbatruc
Re : Fusion de données de plusieurs classeurs

Salut Leskwal, ... tous les autres,

Je ne suis pas certain que ton cas soit le même que celui de Thaititin ... peut-être une nouvelle discussion aurait-elle été plus adaptée?
Avec ce que j'ai cru comprendre, une autre proposition en pièce jointe (testée sous Excel 2000, elle fonctionne)
J'ai ajouté quelques commentaires dans le code, pour te donner des points de repères.

Dis-nous ce qu'il en est.

Pour Tahititin: Désolé de ne pouvoir répondre à ta demande d'aide (Catrice vole en hélicoptère ... moi je m'essaie au cerf-volant! :D)

Modeste
 

Pièces jointes

  • leskwal.zip
    30.1 KB · Affichages: 64
  • leskwal.zip
    30.1 KB · Affichages: 61
  • leskwal.zip
    30.1 KB · Affichages: 65

Catrice

XLDnaute Barbatruc
Re : Fusion de données de plusieurs classeurs

Bonsoir,

Ci-joint une version à tester
 

Pièces jointes

  • Programme opératoire Viscérale Ver beta 1.zip
    27.5 KB · Affichages: 40
  • Programme opératoire Orthopédie Ver beta 1.zip
    27.5 KB · Affichages: 38
  • PROGRAMME OPERATOIRE GENERAL.zip
    22.8 KB · Affichages: 49
  • Programme opératoire Viscérale Ver beta 1.zip
    27.5 KB · Affichages: 40
  • Programme opératoire Orthopédie Ver beta 1.zip
    27.5 KB · Affichages: 40
  • PROGRAMME OPERATOIRE GENERAL.zip
    22.8 KB · Affichages: 49
  • Programme opératoire Viscérale Ver beta 1.zip
    27.5 KB · Affichages: 39
  • Programme opératoire Orthopédie Ver beta 1.zip
    27.5 KB · Affichages: 41
  • PROGRAMME OPERATOIRE GENERAL.zip
    22.8 KB · Affichages: 49

Modeste

XLDnaute Barbatruc
Re : Fusion de données de plusieurs classeurs

Bonsoir Tahititin,

Catrice a l'air fort occupé ailleurs, j'ai jeté un oeil

J'ai essayé de "bidouiller" (je sais, c'est pas bien) mais si c'est très bien, d'autant que ça a l'air d'être ce qu'il fallait faire ! ;) comme je pouvais, j'ai même modifié une ligne de code en VBA [X.Range("A4:R65536").Clear] que j'ai remplacé par [X.Range("A4:T65536").Clear] vu qu'au total, entre les ajouts et les suppressions de colonnes... j'en ai 2 en plus. Le seul problème c'est que CA NE MARCHE PAS !!!! il ne tiens pas compte des 2 dernière colonnes... j'ai du raté une étape

Si je comprends bien ton souci, la réponse se trouve à la ligne 16 du code de Catrice:
Code:
Cel.Offset(0, 1).Resize(, [B][COLOR="DarkOrange"]19[/COLOR][/B]).Copy
19 colonnes à copier, donc au lieu de 17

J'ai un autre soucis la macro ne tiens pas compte des formats de cellule des docuements source : Format "Heure" des colonnes D.Install et D.inter passe en nombre décimal incomprehensif lorsque j'active la macro.
Comment faire
Là, hélas, c'est plus délicat: si on copie les valeurs (c'est ce que Catrice fait à la ligne 17 de son code), on perd effectivement le format heures ... Mais rien ne t'empêche de re-définir le format heures pour ces deux colonnes (tu peux le faire avant ou après avoir exécuté la macro). Une autre forme de collage spécial provoquerait plus de soucis que de le faire "manuellement"

Dis-nous si ça répond à tes questions.

Bonne nuit (pour nous!)

Modeste

Edit: Ah ben mince, v'la Catrice qui revient ... tu me diras si je n'ai pas dit de conneries?
 

Modeste

XLDnaute Barbatruc
Re : Fusion de données de plusieurs classeurs

Bonjour Catrice, Tahititin, le forum,

C'est bien à cette ligne qu'il faut faire une modification. Ouf ... une ânerie de moins à mon actif :D
En revanche, j'ai trouvé plutot 20 que 19. Beuh ... Tu sélectionnes jusqu'en colonne U, alors, non? (note que comme elle est vide, ça ne change pas grand chose)

Pour les formats, j'ai proposé une solution dans le fichier joint.
C'est une des choses que j'avais essayées, mais on retrouve alors les couleurs de police, motifs et bordures du fichier original ... et je ne trouvais pas le résultat très esthétique. Mais j'ai réfléchi avant que Morphée ne m'emporte: si tu ne colles que les valeurs, ne pourrait-on définir le format des 2 colonnes concernées (Q:R) en format heure, au début ou à la fin de la macro?

Modeste
 

Modeste

XLDnaute Barbatruc
Re : Fusion de données de plusieurs classeurs

re-bonjour,

Euh ... "T" normalement est la 20eme lettre de l'alphabet ;)
... En tout cas, c'est la 20ème en Belgique aussi, mais tu démarres déjà avec un Offset(0, 1) ... n'est-ce pas à cause de ça? (pour essayer de comprendre et ne pas dire d'ânerie, j'avais exécuté en "Pas à Pas" hier soir et j'ai recommencé ce matin pour comparer 19 et 20)

@+

Modeste
 

Tahititin

XLDnaute Occasionnel
Re : Fusion de données de plusieurs classeurs

Bonjour Catrice, Bonjour Modeste
Alors là.......... Je suis complétement bleufé !! C'est magique !!
J'avais trouvé le problème (tout seul comme un grand) pour le nombre de colonne (19 au lieu de 17) par contre je ne comprends rien du tout à votre discussion concernant le [Cel.Offset(0, 1).Resize(, NbCol - 1).Copy].... Parce que là, ça fonctionne trés trés bien et ça me conserve la police et le format des colonnes... le top !
Vous ne pouvez pas vous imaginer le temps que j'ai passé sur ces formats de colonne... j'en étais arrivé au point de créer un autre bouton de commande avec une macro de mise en forme pour les 2 colonnes concernées (bidouillage... quand tu nous tiens !)
C'est conscient du travail et du temps passé que je vous tire mon chapeau et vous remercie pour votre précieuse aide.
Pour mon dernier challenge (aboutir à un planning quotidien par salle en fonction du planning de synthèse tout en tenant compte de l'ordre des interventions.... c'est bien connu, les médecins en demande toujours plus !)... je pense que je vais tout simplement fonctionner avec des filtres automatiques (il faudra surtout que je forme la régulatrice du bloc qui a quelques difficultés avec excel !) à moins que vous ayez une autre idée et surtout du temps à y consacrer.
Encore un grand merci à tous les 2 et désolé pour le retard de réponse mais je n'avais pas sélectionner le "notification instantanée par mail":rolleyes:

A trés bientôt
 

Modeste

XLDnaute Barbatruc
Re : Fusion de données de plusieurs classeurs

Salut,

C'est conscient du travail et du temps passé que je vous tire mon chapeau et vous remercie pour votre précieuse aide.
Tu noteras que pour le travail et le temps passé, c'est Catrice qu'il convient de remercier. Moi j'essaie uniquement de comprendre.

Bonne nuit à vous (je vais mettre mon neurone au lit :D)

Modeste
 

Leskwal

XLDnaute Occasionnel
Re : Fusion de données de plusieurs classeurs

Modeste

Vraiment, mais Vraiment désolé de ne pas t'avoir répondu, non pas par impolitesse mais parce que je n'avais tout simplement pas vu dans ma boîte mail que quelqu'un avait répondu à ma demande :D (Trop de Pub) :).

Je vais de ce pas tester ta proposition.

Encore Merci et désolé pour mon silence.

Pascal
 

Leskwal

XLDnaute Occasionnel
Re : Fusion de données de plusieurs classeurs

Modeste

Wahoo, fort, très fort. :)

A première vue, c'est parfait. ;)

Je vais appliquer ta solution à mon fichier réel.

Encore un grand merci, et si je "Bug" je ferai appel de nouveau à toi. :D

@ +

pascal
 

Tahititin

XLDnaute Occasionnel
Re : Fusion de données de plusieurs classeurs

Bonjour,
Je reviens vers vous un un dernier soucis (je vous promets que c'est dernier!). J'aimerais pouvoir filtrer le programme opératoire général pour extraire (imprimer) un pragramme quotidien par salle.
Le filtre automatique fonctionne pour les salles mais ça ne fonctionne pas pour le jour... en effet, excel ne considère que la première ligne des cellules fusionnée. J'ai bien essayé de modifier (défusionner) les fichier sources (programme par spécialité) mais la macro s'obstine à fusionner les cellules "jour".
Avvez-vous une méthode ou un moyen pour palier ce problème ?
D'avance merci
Je vous joint le fichier "programme opératoire général"
 

Pièces jointes

  • PROGRAMME OPERATOIRE GENERAL V. beta 1.zip
    29 KB · Affichages: 34
  • PROGRAMME OPERATOIRE GENERAL V. beta 1.zip
    29 KB · Affichages: 35
  • PROGRAMME OPERATOIRE GENERAL V. beta 1.zip
    29 KB · Affichages: 34

Catrice

XLDnaute Barbatruc
Re : Fusion de données de plusieurs classeurs

Bonsoir,

Il faut que la date soit dans chaque cellule ...
Essaie en mettant cette ligne en remarque :
Code:
'If i > 0 Then Application.DisplayAlerts = False: Y.Offset(-i, 0).Resize(i + 1).Merge: Application.DisplayAlerts = True
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
791

Statistiques des forums

Discussions
312 196
Messages
2 086 094
Membres
103 116
dernier inscrit
kutobi87