Recopier après annulation de la fusion de lignes

Résolu/Fermé
arcade89400 Messages postés 25 Date d'inscription samedi 7 juin 2014 Statut Membre Dernière intervention 13 juin 2016 - 1 août 2015 à 16:26
arcade89400 Messages postés 25 Date d'inscription samedi 7 juin 2014 Statut Membre Dernière intervention 13 juin 2016 - 3 août 2015 à 07:03
Bonjour à tous et à toutes,
La macro suivante annule la fusion des cellules que j'ai mises en surbrillance :
.
Sub Defusion()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Valeur = ActiveCell.Value
Selection.UnMerge
Selection.Value = Valeur
End Sub
.
Je me retrouve avec une ligne de 3 cellules en ligne qui ont des libellés ; et en dessous une ligne de 3 cellules qui sont vides. Je souhaite recopier les 3 cellules du haut dans les 3 cellules du bas.
Si je complète la macro ci-dessus par une macro enregistrée, le numéro de ligne reste fixé. Merci de votre aide. Crldt

A voir également:

7 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
1 août 2015 à 22:57
Bonjour,
Pouvez-vous, une fois, mettre le fichier avec situation avant traitement et le résultat que vous voulez obtenir ce sera préférable pour une bonne compréhension dans le but de vous indiquer une proposition qui tienne la route.
Si oui le fichier sur https://www.cjoint.com/ et poster le lien.

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
1 août 2015 à 23:29
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
1 août 2015 à 23:42
Merci, salutations.
0
arcade89400 Messages postés 25 Date d'inscription samedi 7 juin 2014 Statut Membre Dernière intervention 13 juin 2016
2 août 2015 à 17:17
Désolé, parti dans mes problèmes, je pensais être clair ! Et pardon à ceux qui ont bien voulu tenter m'aider et spécialement à Eriiic dont je ne comprenais pas qu'il me demandait d'être plus clair.
Donc, je reçois un tableau tel que celui en A1 :D10 et j'ai besoin d'avoir celui en F1 :I10 pour pouvoir faire des tris. La plage de cellules concernées est variable ; pas de problème pour mettre en surbrillance la plage concernée, évidemment.
Question subsidiaire, le tableau réel était bien plus grand, il m'arrive souvent d'oublier des cellules fusionnées. Serait-il possible d'avoir une macro (la même, ou une autre) qui « débusque » les plages oubliées.
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 2/08/2015 à 17:50
Bonjour,
Merci, c'est très bien mais on ne peut rien faire avec cette image.
Si on vous demande gentiment : Si oui le fichier sur https://www.cjoint.com/ et poster le lien alors faites le ou alors préciser que vous ne le pouvez pas.... !
Et n'oublier pas que bonjour et salutations vont de pair ...


Salutations.
Le Pingou
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
2 août 2015 à 18:17
Bonjour à tous
Arcade89400, J'aurai apprécié que vous donniez une réponse à ma proposition sur le forum VBA avant de faire une nouvelle demande sur le forum EXCEL, Si ma réponse ne convenait, il suffisait de le dire, j'aurai fait le nécessaire pour l'adapter.
Ca n'encourage pas les gens à vous aider. A éviter à l'avenir,
Voici quand même une proposition
Sub Defusionner()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Range(Cells(2, 6), Cells([F10000].End(xlUp).Row, 9)).Clear
    Range(Cells(2, 1), Cells([A10000].End(xlUp).Row, 4)).Copy
    Range("F2").Select
    ActiveSheet.Paste
    
    'Defusionner
    For i = 6 To 9
        For Each cel In Range(Cells(2, i), Cells([A10000].End(xlUp).Row, i))
            Valeur = cel.Value
            If cel.Offset(1, 0).Row > cel.Row + 1 Then
                Cells(cel.Row, i).UnMerge
                Cells(cel.Row + 1, i).Value = Valeur
            End If
        Next
    Next i
End Sub

Cdlt
0
arcade89400 Messages postés 25 Date d'inscription samedi 7 juin 2014 Statut Membre Dernière intervention 13 juin 2016
2 août 2015 à 20:32
Bonsoir Frenchie83,
Je viens d'essayer cette macro. Elle est parfaite en ce qu'elle "défusionne" toutes les cellules fusionnées d'un seul coup dans toute la feuille, quelle rapidité. Toutefois elle pose un problème en ce qu'elle recopie le contenu de la plage A:D sur la plage F:I dont les informations sont perdues.
Encore pardon et merci.
Bonne soirée
0

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

Posez votre question
arcade89400 Messages postés 25 Date d'inscription samedi 7 juin 2014 Statut Membre Dernière intervention 13 juin 2016
2 août 2015 à 20:17
Bonsoir,
Décidément, je ne fais que des bourdes vis-à vis de ceux qui veulent m'aider ! Je leur en demande bien pardon, c'est involontaire. Mais soyez compréhensif: je me bats avec Excel depuis déjà longtemps. Je découvre CCM, je m'y inscris et il faut apprendre à l'utiliser ainsi que les habitudes de ceux qui l'utilisent. Ajoutez à cela que j'ai ma petite fille de 4 ans dans les pattes (mais je ne me plains pas...) et vous pourrez comprendre que tout gérer de front peut amener à faire des bourdes.
Voici le lien vers mon fichier qui n'a rien de secret !
https://www.cjoint.com/c/EHcshbZRT6b
Il s'agit donc de supprimer la fusion des cellules fusionnées pour pouvoir faire des tris. Si la macro pouvait repérer les cellules en question, ce serait super car si une seule cellule est encore fusionnée, le tri est impossible.
J'espère que vous avez tous les éléments en main. Merci d'avance pour votre aide. Bonsoir
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
Modifié par eriiic le 2/08/2015 à 20:37
Bonjour,

Les choses ayant été mises au clair une macro que j'avais faite :
https://www.cjoint.com/c/EHcsJenLn3b
Plage à traiter à adapter si besoin.
eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
arcade89400 Messages postés 25 Date d'inscription samedi 7 juin 2014 Statut Membre Dernière intervention 13 juin 2016
2 août 2015 à 21:07
Bonsoir Eriiic,
C'est très exactement ce que je voulais ! Et d'un seul coup d'un seul !
Et encore pardon de ma première réponse. Je n'avais pas compris que vous aviez besoin d'informations. D'autre part, le commentaire qui double votre signature, je l'ai lu comme du texte normal car j'avais demandé à recevoir la réponse dans ma boite mail; je ne comprenais pas ...
Et là, je suis bloqué, comment dire que le problème est résolu ?
En attendant, un grand merci et bonne soirée. Crldt
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
2 août 2015 à 21:09
Bonjour,
Je vous pries d'essaye le code (testé OK supprime fusion et génère les vides) qui suit :
Sub suprfusionrecopval()
Range("a1").CurrentRegion.Select
deli = Selection.Rows.Count
deco = Selection.Columns.Count
Selection.UnMerge
For li = 2 To deli
    For c = 1 To deco
        If Cells(li, c) = "" Then
            Cells(li, c) = Cells(li, c).Offset(-1).Value
        End If
    Next c
Next li
MsgBox "La plage ne contient plus de cellule fusionnées et les valeurs sont générées"
End Sub

0
arcade89400 Messages postés 25 Date d'inscription samedi 7 juin 2014 Statut Membre Dernière intervention 13 juin 2016
3 août 2015 à 07:03
Bonjour,
Il est 7h et j'ai voulu tester la macro ci-dessus avant même mon café ! J'ai probablement recopié, mais il ne se passe rien sauf l'affichage du message que les cellules n'ont pas bougé. Je vais rééssayer dans la journée. Mais ça doit venir de moi ! Merci de votre aide. Crldt
0