[Excel] Mise en forme transposé automatisé
spauk13
Messages postés
12
Statut
Membre
-
spauk -
spauk -
Bonjour,
J'aimerais vous poser une petite question sur Excel s'il vous plait.
Voilà, je fais beaucoup de mise en forme de fichier Excel et je voudrais savoir comment vous feriez pour traiter l'exemple ci-dessous de façon automatisé.
Je reçois ce type de tableau :
http://wyzer.free.fr/images/Excel_1.jpg
Puis je dois tout réorganiser comme ceci :
http://wyzer.free.fr/images/Excel_2.jpg
Car lors de l'envoi du fichier dans la base de données AS400, le convertisseur n'accepte qu'une collone "ENFANT"
Donc à chaque fois ça demande beaucoup de temps pour tout remettre en forme.
Merci par avance !!!
PS: voici le fichier excel : http://wyzer.free.fr/exemple.xls
J'aimerais vous poser une petite question sur Excel s'il vous plait.
Voilà, je fais beaucoup de mise en forme de fichier Excel et je voudrais savoir comment vous feriez pour traiter l'exemple ci-dessous de façon automatisé.
Je reçois ce type de tableau :
http://wyzer.free.fr/images/Excel_1.jpg
Puis je dois tout réorganiser comme ceci :
http://wyzer.free.fr/images/Excel_2.jpg
Car lors de l'envoi du fichier dans la base de données AS400, le convertisseur n'accepte qu'une collone "ENFANT"
Donc à chaque fois ça demande beaucoup de temps pour tout remettre en forme.
Merci par avance !!!
PS: voici le fichier excel : http://wyzer.free.fr/exemple.xls
19 réponses
-
-
Salut,
Pour faire simple, avec la RECHERCHEV dans une cellule exemple A18 tu saisis Monsieur Marc par exemple en B18 tu mets la formule =RECHERCHEV(Feuil1!A18;A2:D4;2;FAUX)
en B19 =RECHERCHEV(Feuil1!A$18;$A$2:$D$4;3;FAUX)
en B20 =RECHERCHEV(Feuil1!A$18;$A$2:$D$4;4;FAUX)
etc ...
Encore mieux en A18 une liste déroulante qui reprend la liste des noms en B18, B19, etc ... la formule de rechercheV ensuite tu fais un copier collage spécial cocher valeurs sur une autre cellule
Ou alors le VBA mais là il faut avoir quelques connaissances
A+
Mike-31
Un problème sans solution est un problème mal posé (Einstein) -
Ok merci, je ne connaissais pas cette fonction
Comme je suis nouveau sur Excel, je ne connais pas VBA
Mais concrètement dans mon cas ça pourrait m'aider comment ? -
re,
Dès que j'ai un moment je te fais un petit montage
A+
Mike-31
Un problème sans solution est un problème mal posé (Einstein) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Bonjour,
Voici un petit exemple : https://www.cjoint.com/?kFuKs5gMKY -
bonjour,
par formule
https://www.cjoint.com/?kFv6mf18kk
mais si tu as beaucoup de familles, il vaudrait peut-^tre mieux passer par VBA comme l'a suggéré Ponpon -
On a entre 3000 et 5000 familles par fichier
Ponpon -> merci, c'est une macro que tu as fait ?
Michel_m -> merci, ça va me servir comme exemple :-)) -
OK, content pour toi!
Ponpon: peut être ajouter l'instruction
application.screenupdating= false
pour gagner du temps ? -
Je viens de penser à un truc
J'ai essayer de faire une macro qui exécute ces taches :
1) ajouter 4 lignes sous la première famille
2) copier les 4 derniers enfants, et les coller sur les nouvelles ligne en transposé
3) supprimer les 4 derniers enfants de la première ligne
Et voilà
Par contre, je n'arrive pas à executer ma macro en auto pour qu'elle le fasse pour tout le fichier
J'ai regarder le code et c'est normal que ça marche pas pour tout le fichier car c'est indiquer "C2:F2" etc...
Faudrait remplacer ça par un truc générique, où quelque chose comme ça non ?
Voici le code de ma macro :
Sub Macro3() ' ' Macro3 Macro ' ' Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Selection.EntireRow.Insert Range("C2:F2").Select Selection.Copy Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=True Range("C2:F2").Select Application.CutCopyMode = False Selection.ClearContents Range("A2").Select Selection.AutoFill Destination:=Range("A2:A6") Range("A2:A6").Select Range("C2").Select End Sub -
Bonjour,
Oui c’est une autre possibilité et bravo d’avoir essayé.
Pour le plaisir je vais voir comment adapté votre code pour que cela fonctionne !
C’est pour demain. -
Merci !!
Mon but ces prochains mois c'est d'apprendre au maximum toute les possibilités qu'offre Excel, car je sais que ça va me permettre de gagner un temps énorme -
Re,
Je ne t'avais pas laissé tombé, un contre temps, je vois que des solutions t'on été proposé et répondent à tes attentes.
A+
Mike-31
Un problème sans solution est un problème mal posé (Einstein) -
-
Bonjour,
La procédure selon votre idée : https://www.cjoint.com/?lbwFxHCxsf -
bonjour,
pour peut-^tre apprendre:
dans les macros, il faut éviter au maximum les select-selection et les copy-paste très longs...
L'enregistreur de macros enregistre tes faits et gestes et est très pratique pour apprendre mais il faut élaguer: Ponpon (bonjour) t'a montré 2 exemples très intéressants et le premier est beaucoup + rapide
Dans les grands tableaux (au delà de 1000 lignes) il est préférable de passer par des "variables-tableaux (array), tu trouveras ci-joint une démo de comparaison sur 20000 lignes envoyée récemment sur ce forum ( à mettre sous le coude pour + tard):
https://www.cjoint.com/?lckWRL3IIL
-
Bonjour michel_m,
Merci pour les exemples.
Dans la procédure [transposer] il me semble qu’il y a une petite erreur dans la ligne
ReDim tablo(nbre_famille - 12, nbre_pers - 1)
La déduction de [-12] au [nbre _famille] devrait-être 1 ou 0 et de plus une valeur d’argument négative provoque une erreur d’exécution 7 : Mémoire insuffisante.
-
-
Bonjour,
non, j'ai enlevé la pièce jointe car je me suis aperçu APRES que je n'avais pas sauvegardé !!! chose qui m'arrive assez souvent en ce moment: j'vieillis mal!
je vais peut-être la refaire pour le fun, mais...
Cordialement -
Bonjour michel_m,
Merci pour la dernière version.
Personnellement je retiens la partie de la procédure « restitution avec encadrement cellules » que je ne connaissais pas sous cette forme. -
Merci michel_m !!!!!!
Et encore merci à tous !!!!
J'ai acheter un livre pour apprendre la programmation VBA sous Excel, car ça va beaucoup m'aider dans mon boulot
Je reviendrais pour vous des questions, ou alors je l'espère, pour vous montrer ce que j'aurais réussi à faire