Mise en forme sur Excel

Résolu/Fermé
Loypeau Messages postés 4 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 27 janvier 2010 - 26 janv. 2010 à 13:16
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 - 27 janv. 2010 à 10:56
Bonjour,
J'ai un tableau Excel du genre de celui-ci qui s'étend sur 18.000 lignes et 2 colonnes. Il s'agit au final d'une fiche d'identité de militaires avec à peu de choses près les mêmes entrées, à savoir le nom, prénom, année de naissance, etc...

nom	 RUBION
prenom	 Charles Esprit
annee_de_naissance	1782
lieu_de_naissance	 La Gaubretière (Vendée)
commune_de_residence	 Hôtel des Invalides
divers	 soldat âgé de 79 ans décédé le 21 février 1861 à l'Hôtel des Invalides. Inhumé à Saint Louis des Invalides le 23 février 1861.

nom	 ABADIE
prenom	 Jean François
annee_de_naissance	1788
commune_de_residence	 SAINT MICHEL EN L’HERM
grade	 officier de santé
regiment	 Marine
dossier	100717

Et je voudrais, sans devoir tout reprendre fiche par fiche, obtenir le résultat suivant :

nom	                                         ACHALLE	                                                      ACHARD
prenom	                           Michel Théodore	                                              François
annee_de_naissance	                  1790	
commune_de_residence	 LES SABLES D’OLONNE	                           SAINT GILLES SUR VIE
grade	                               matelot	                                                        chasseur
régiment		                                                                               Corps franc Chasseurs de Vendée
dossier	                                 100822	                                                        296499

C'est volontairement que les deux exemples prennent des noms différents.

Quelle méthode puis-je avoir pour me faciliter la vie.

Je vous remercie par avance.


Loypeau
A voir également:

10 réponses

Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
26 janv. 2010 à 13:45
Bonjour,

pour plus de lisibilité, merci de poster le fichier ici http://www.cijoint.fr/

et si possible indiquez sur le fichier les modifications que vous souhaitez voir apparaître
0
Loypeau Messages postés 4 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 27 janvier 2010
26 janv. 2010 à 14:52
Voici le lien du fichier en question avec sur la première feuille le fichier brut et sur la seconde le résultat souhaité. C'est pas évident du tout car :
-jusqu'à la ligne 4000, l'intercalaire entre les fiches est régulier, après non
-toutes les données ne sont pas renseignées (par ex. on n'a pas l'année de naissance pour tous, tout du moins pour le moment car je pense compléter le tableau par le suite)
http://www.cijoint.fr/cjlink.php?file=cj201001/cijMDVbSAl.xls
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
26 janv. 2010 à 16:40
Bon alors j'ai réussi à te créer un fichier qui te récupères déjà tous les noms.

Etant donné l'organisation de ton fichier et mon manque d'expérience en progra VBA je suis en train de réfléchir à comment récupérer l'ensemble des données afin de les organiser par ligne et en mettant "inconnu" pour les données manquantes.
0
Loypeau Messages postés 4 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 27 janvier 2010
26 janv. 2010 à 19:36
en filtrant, j'ai pu supprimer les lignes qui ne m'intéressaient pas et qu'on voit vers la ligne 4000, cad là où s'et arrêté mon travail nom par nom.
pour avoir les noms en colonne, on doit pouvoir y arriver par une formule du style : Si A1 est un nom dans ce cas la ligne entière va à tel endroit, sinon elle reste en A1 et ainsi de suite jusqu'à A 19000 ; Idem pour les autres données (prénoms, date de naissance, etc...) quand il y en a. EN revanche, quand on n'a pas la données, dans ce cas, laisser un espace. ET à partir de là il sera plus facile de travailler sur le tableau.
Voilà la théorie mais après je suis bien incapable de mettre en pratique.
0

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

Posez votre question
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
27 janv. 2010 à 07:31
Donc en fait l'année de naissance ne doit pas apparaître?
0
Loypeau Messages postés 4 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 27 janvier 2010
27 janv. 2010 à 08:14
Voici :
http://www.cijoint.fr/cjlink.php?file=cj201001/cijrmpCwTc.xls
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
27 janv. 2010 à 08:24
Ok je tente quelquechose
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
27 janv. 2010 à 08:56
J'ai presque fini. J'ai juste un petit bug pour les numéros de dossier. Je cherche une solution.

Tu peux déjà commencer par filtrer ton tableau "Liste" et supprimer les lignes qui n'apparraîtront pas dans le tableau "mise en page" sinon la macro risque de ne pas marcher
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
27 janv. 2010 à 09:36
Mon fichier est fini mais je n'arrive pas à le mettre sur cijoint (problème de serveur).

Tu peux me faire passer ton adresse mail en message privé pour que je te l'envoie ou alors tu peux créer un bouton et lui appliquer la macro suivante:

Sub Bouton1_QuandClic()

Sheets("mise en page").Range("a2:g3000").Delete

Dim i As Long

For i = 1 To 20000
If Sheets("Liste").Range("a" & i).Value = "nom" Then Sheets("mise en page").Range("a65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i).Value Else GoTo fin
If Sheets("Liste").Range("a" & i + 1).Value = "prenom" Then Sheets("mise en page").Range("b65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 1).Value Else Sheets("mise en page").Range("b65536").End(xlUp).Offset(1, 0) = "Inconnu"
If Sheets("Liste").Range("a" & i + 1).Value = "annee_de_naissance" Then Sheets("mise en page").Range("c65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 1).Value Else If Sheets("Liste").Range("a" & i + 2).Value = "annee_de_naissance" Then Sheets("mise en page").Range("c65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 2).Value Else Sheets("mise en page").Range("c65536").End(xlUp).Offset(1, 0) = "Inconnue"
If Sheets("Liste").Range("a" & i + 1).Value = "commune_de_residence" Then Sheets("mise en page").Range("d65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 1).Value Else If Sheets("Liste").Range("a" & i + 2).Value = "commune_de_residence" Then Sheets("mise en page").Range("d65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 2).Value Else If Sheets("Liste").Range("a" & i + 3).Value = "commune_de_residence" Then Sheets("mise en page").Range("d65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 3).Value Else Sheets("mise en page").Range("d65536").End(xlUp).Offset(1, 0) = "Inconnue"
If Sheets("Liste").Range("a" & i + 1).Value = "grade" Then Sheets("mise en page").Range("e65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 1).Value Else If Sheets("Liste").Range("a" & i + 2).Value = "grade" Then Sheets("mise en page").Range("e65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 2).Value Else If Sheets("Liste").Range("a" & i + 3).Value = "grade" Then Sheets("mise en page").Range("e65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 3).Value Else If Sheets("Liste").Range("a" & i + 4).Value = "grade" Then Sheets("mise en page").Range("e65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 4).Value Else Sheets("mise en page").Range("e65536").End(xlUp).Offset(1, 0) = "Inconnu"
If Sheets("Liste").Range("a" & i + 1).Value = "regiment" Then Sheets("mise en page").Range("f65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 1).Value Else If Sheets("Liste").Range("a" & i + 2).Value = "regiment" Then Sheets("mise en page").Range("f65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 2).Value Else If Sheets("Liste").Range("a" & i + 3).Value = "regiment" Then Sheets("mise en page").Range("f65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 3).Value Else If Sheets("Liste").Range("a" & i + 4).Value = "regiment" Then Sheets("mise en page").Range("f65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 4).Value Else If Sheets("Liste").Range("a" & i + 5).Value = "regiment" Then Sheets("mise en page").Range("f65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 5).Value Else Sheets("mise en page").Range("f65536").End(xlUp).Offset(1, 0) = "Inconnu"
If Sheets("Liste").Range("a" & i + 3).Value = "dossier" Then Sheets("mise en page").Range("g65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 3).Value Else If Sheets("Liste").Range("a" & i + 4).Value = "dossier" Then Sheets("mise en page").Range("g65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 4).Value Else If Sheets("Liste").Range("a" & i + 5).Value = "dossier" Then Sheets("mise en page").Range("g65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 5).Value Else If Sheets("Liste").Range("a" & i + 6).Value = "dossier" Then Sheets("mise en page").Range("g65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 6).Value Else If Sheets("Liste").Range("a" & i + 7).Value = "dossier" Then Sheets("mise en page").Range("g65536").End(xlUp).Offset(1, 0) = Sheets("Liste").Range("b" & i + 7).Value Else Sheets("mise en page").Range("g65536").End(xlUp).Offset(1, 0) = "inconnu"

fin:
Next i

End Sub

Si tu as des questions n'hésite pas
0
Farfadet88 Messages postés 6293 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 29 avril 2020 1 369
27 janv. 2010 à 10:56
Fichier envoyé.

Il te convient?
0