Mise en forme sur Excel
Résolu
Loypeau
Messages postés
4
Statut
Membre
-
Farfadet88 Messages postés 7780 Statut Membre -
Farfadet88 Messages postés 7780 Statut Membre -
Bonjour,
Loypeau
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:
- Mise en forme sur Excel
- Mise en forme conditionnelle excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment trier par ordre alphabétique sur excel - Guide
- Mise en forme tableau croisé dynamique - Guide
10 réponses
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
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
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
-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
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.
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.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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