[Excel] Mise en forme transposé automatisé

Fermé
spauk13 Messages postés 12 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 8 mars 2010 - 30 oct. 2009 à 21:47
 spauk - 2 nov. 2009 à 23:23
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
A voir également:

19 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
2 nov. 2009 à 17:26
re,

Voici la macro pour le pb de spauk réécrite ET sauvegardée!
https://www.cjoint.com/?lcrySrL0Y4
1
Mike-31 Messages postés 18344 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 novembre 2024 5 103
30 oct. 2009 à 22:11
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)
0
spauk13 Messages postés 12 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 8 mars 2010
31 oct. 2009 à 17:55
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 ?
0
Mike-31 Messages postés 18344 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 novembre 2024 5 103
31 oct. 2009 à 18:53
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)
0

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

Posez votre question
spauk13 Messages postés 12 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 8 mars 2010
31 oct. 2009 à 19:41
Merci beaucoup !!!!!!!!!!!!!!
0
Bonjour,
Voici un petit exemple : https://www.cjoint.com/?kFuKs5gMKY
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
31 oct. 2009 à 22:01
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
0
spauk13 Messages postés 12 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 8 mars 2010
31 oct. 2009 à 22:53
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 :-))
0
Bonjour,
Oui.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
31 oct. 2009 à 22:57
OK, content pour toi!

Ponpon: peut être ajouter l'instruction
application.screenupdating= false
pour gagner du temps ?
0
Merci michel_m, j'ai pris bonne note.
0
spauk13 Messages postés 12 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 8 mars 2010
31 oct. 2009 à 23:47
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
0
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.
0
spauk13 Messages postés 12 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 8 mars 2010
1 nov. 2009 à 00:10
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
0
Mike-31 Messages postés 18344 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 8 novembre 2024 5 103
1 nov. 2009 à 14:51
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)
0
spauk13 Messages postés 12 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 8 mars 2010
1 nov. 2009 à 22:06
Non t'inquiète y a pas de soucis ;-))
0
Bonjour,
La procédure selon votre idée : https://www.cjoint.com/?lbwFxHCxsf
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
2 nov. 2009 à 10:52
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


0
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.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
2 nov. 2009 à 16:25
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
0
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.
0
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
0