Reorganiser données saisies par un gorret comme si c'était dans Word

Gacko

XLDnaute Nouveau
Bonjour,

Dans la boite ou je bosse le niveau informatique de certains est bas, très bas et derrière c'est l'enfer pour rendre les données exploitables par les autres utilisateurs....

Voilà ce qui m'amène:
une buse (et encore je suis poli ;-) ) s'est servi d'Excel comme d'un Word pour saisir du texte à la chaine en changeant de cellule après chaque point !
Pour faire bonne mesure elle a fusionné aléatoirement certaines cellules pour obtenir une "jolie" mise en page !
Bref on se retrouve avec un gros merd**r inexploitable car pour utiliser ce fichier il faudrait qu'il soit trié à partir de la colonne A mise en ordre croissant ce qui est actuellement strictement impossible.

Pensez vous qu'il existe une solution qui ne me prenne pas 6 mois les amis ?

Merci !
 
Dernière modification par un modérateur:

Victor21

XLDnaute Barbatruc
Bonjour, Gacko.
... Pensez vous qu'il existe une solution qui ne me prenne pas 6 mois les amis ? ...

J'ai bien peur que non : certaines cellules de la colonne C contiennent des images.
Je vous suggère de former la buse, et de la mettre à contribution pour re-saisir à votre goût le travail du goret.

PS1 : Savez-vous qu'un tableur est plutôt utilisé pour manier des nombres que du texte ?
PS2 : Je ne suis pas spécialiste de Word, mais avez-vous envisagé un copier-coller d'Excel vers Word, puis un tri dans Word ?
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum, Victor21 ;)

@Gacko
Il y a ceux qui maitrisent mal (ou pas encore;) ) Excel ou Word par défaut de formation
Et il y a aussi les membres du forum qui maîtrisent mal leur pièce jointe par manque de vigiilance

Donc à goret, goret et demi ;)
Match nul !

5 – La possibilité de joindre des fichiers est donnée sur ce forum. Ne pas hésiter à utiliser cette fonction, tout en veillant que les données soient bidons et donc qu’aucune donnée confidentielle, nominative ne soit dans le fichier.

EDITION: Je viens juste de voir l'onglet: créer un lien hypertexte
(qui lui aussi contient rien qui ressemble à du bidon ;))


PS: Il est à noté que ce message est simplement rédigé en mode ironie amicale
Donc inutile de s'énerver ;)
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonsoir,

Encore la phobie des cellules fusionnées qui sévit sur ce forum, ras-le-bol !

La buse est sans doute plus forte que vous, le fichier me paraît très bien.

Pour l'exploiter aucun problème si l'on utilise VBA et MergeArea.

A+
 

chris

XLDnaute Barbatruc
Bonjour

Je
  • commencerais par défusionner les colonnes A et B
  • dupliquerais les données sur toutes les lignes (voir méthode là Ce lien n'existe plus Combler les trous...)
  • défusionnerais E et F
  • ajouterais une colonne LIGNE à gauche avec une formule permettant une numérotation par groupe en fonction de A (devenue B) puis fixerais le résultat (copier/collage spécial valeur)
  • Trierais par Société, Catégorie de Personnel, LIGNE
Après reste à replacer les quelques images, voir s'il faut concaténer les n lignes des groupes Société, Catégorie de Personnel en une ou sinon, ajuster la hauteur des lignes et utiliser une MFC pour masquer la répétition Société, Catégorie de Personnel

Mais la question reste pourquoi utiliser Excel pour du texte ?

Concernant la fusion : certes son peut s'en débrouiller avec VBA mais pour ma part je ne trouve pas normal qu'un utilisateur lamdda, qui par définition ne maîtrise pas VBA, ne puisse plus trier ni copier quand il a utilisé des cellules fusionnées.
Que ce soit sur Excel ou sur Word ou Powerpoint, Microsoft n'est jamais allé au bout de la logique de fusion ( comme au bout de celle des liaisons mais c'est un autre sujet).
J'ai utilisé des logiciels qui géraient cela de façon bien plus logique et simple.
A noter que dans Excel, 9 fois sur 10 la fusion ne sert à rien : on peut obtenir aussi "beau" sans...

Et cette opinion n'est pas partagée qu'ici...
 

Gardien de phare

XLDnaute Accro
Bonjour,
[Off mais tant que ça]
Je ne sais pas si ils sont mauvais dans la boîte ou tu bosses, en informatique ni s'il y a des buses, mais ce n'est pas qu'en informatique que ce serait vrai. Il faut 5 minutes à peine pour identifier d'où vient ce classeur, dont les données semblent véritables et contient même des éléments nominatifs. RGPD, tu connais ? Données d'entreprises confidentielles, tu connais ? Moi, je suis ton manager et je tombe là-dessus, tu passes un très sale quart d'heure. Publication de données de l'entreprise, dénigrement public des collègues...
[/Off]
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Le code pour trier le tableau sur la colonne A malgré les cellules fusionnées et malgré les images en colonne C :
Code:
Sub TrierSurColonneA()
Dim derlig&, o As Object, r As Range, i&, rc&, x, j%
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Feuil1 'CodeName de la feuille
    .Columns("L").Resize(, .Columns.Count - 11).Clear 'nettoyage
    derlig = .Range("A" & .Rows.Count).End(xlUp).Row
    If derlig < 7 Then Exit Sub
    '---repère en colonne L pour les images---
    For Each o In .DrawingObjects
        If o.TopLeftCell.Column = 3 Then
            o.Placement = 2 'fige les dimensions
            .Cells(o.TopLeftCell.Row, 12) = o.Name
        End If
    Next o
    '---traitement du tableau---
    Set r = .Range(.Rows(7), .Range("A" & derlig).MergeArea)
    r.UnMerge 'défusionne les cellules
    r.Borders.LineStyle = xlNone 'suppression des bordures
    If Application.CountBlank(r.Columns(1)) Then _
        r.Columns(1).SpecialCells(xlCellTypeBlanks) = "=R[-1]C"
    r.Columns(1) = r.Columns(1).Value 'supprime les formules
    r.Sort r(1), xlAscending, Header:=xlNo 'tri sur la colonne A
    rc = r.Rows.Count
    For i = 1 To rc
        x = r(i, 1)
        For j = i + 1 To rc
            If r(j, 1) <> x Then Exit For
        Next j
        r(i, 1).Resize(j - i).Merge 'refusionne
        r(i, 2).Resize(j - i).Merge
        r(i, 4).Resize(j - i).Merge
        r(i, 5).Resize(j - i).Merge
        r.Rows(i).Resize(, 11).Borders(xlEdgeTop).Weight = xlMedium 'bordure superieure
        i = j - 1
    Next i
    For i = 7 To 11: r.Resize(, 11).Borders(i).Weight = xlMedium: Next i
    Intersect(r, .[A:B,D:E]).Borders.Weight = xlMedium
    r.Columns(3).HorizontalAlignment = xlLeft
    r.Columns(3).Rows.AutoFit 'ajustement hauteurs
    '---positions et dimensions des images---
    For Each o In .DrawingObjects
        If o.TopLeftCell.Column = 3 Then
            .Shapes(o.Name).LockAspectRatio = msoTrue
            i = Application.Match(o.Name, r.Columns(12), 0)
            o.Top = r(i, 3).Top + 2
            o.Left = r(i, 3).Left + 2
            o.Height = r(i, 1).MergeArea.Height - 4
            Intersect(r(i, 1).MergeArea.EntireRow, r.Columns(3)).Merge 'fusion des cellules sous l'image
        End If
    Next o
    .[L:L].ClearContents 'RAZ
End With
End Sub
Nota : j'ai renommé les 3 images en colonne C car elles portaient le même nom.

Fichier joint.

A+
 
Dernière édition:

Amilo

XLDnaute Accro
Bonsoir le forum,

Une solution qui donne plutôt un bon résultat mais avec Excel 2016,
Convertir le fichier excel vers pdf puis du pdf vers Word.
Depuis cette version, la mise en page, les tableaux et autres depuis un pdf vers Word sont bien conservés.
Pour les images, l'OCR de OneNote fait très bien la conversion en texte.

Cordialement
 

Gacko

XLDnaute Nouveau
Merci les amis, voila des solutions que je vais examiner de près. Le VBA c'est pratique mais la suggestion initiale de Victor21 avec le copier collé sous Word me plait bien même si c'est un peu plus de boulot.
Bonne soirée à tous.
 

job75

XLDnaute Barbatruc
Bonjour le forum,

Ci-joint un fichier pour qu'on puisse quand même tester la solution que j'ai proposée.

Bonne journée.
 

Pièces jointes

  • Trier cellules fusionnées(1).xlsm
    28.7 KB · Affichages: 24
  • Trier cellules fusionnées(1).xls
    84.5 KB · Affichages: 22