Macro pour copier, défusionner et ....

Résolu/Fermé
Emi80110 Messages postés 52 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 13 janvier 2025 - 26 juin 2023 à 14:27
Emi80110 Messages postés 52 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 13 janvier 2025 - 29 juin 2023 à 15:26

Bonjour à tous (et toutes :-) )

voici le lien du fichier concerné par ma demande ci-dessous (ca n'est qu'un échantillon)

https://www.cjoint.com/c/MFAmxvZMydt

dans l'onglet feuill1 le fichier d'origine

dans l'onglet feuill2 le résultat dont j'aurai besoin 

MA DEMANDE:

J'ai dans ce fichier les colonnes A et B qui fusionnent les cellules selon certaines données.

J'aurai besoin de trouver une macro qui puisse copier cet onglet mais sans fusionner les cellules et surtout en rappelant la donnée fusionnée sur chaque ligne concernée par cette donnée. 

Je ne sais pas si je suis claire... c'est pourquoi j'ai mis le résultat dont j'aurai besoin en feuill2.

Mon fichier d'origine traite en réalité plus de 10 000 lignes c'est pourquoi je ne peux pas me permettre de le faire intégralement à la main sachant que je l'éditerai chaque semaine.

Merci d'avance pour votre aide :-)

A voir également:

4 réponses

cousinhub29 Messages postés 994 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 27 janvier 2025 353
29 juin 2023 à 15:03

Bonjour,

Un autre code, qui ne prend en compte que les cellules fusionnées :

Sub defusion()
Dim Cel As Range, Plg As Range
For Each Cel In ActiveSheet.UsedRange
    If Cel.MergeCells Then
        Set Plg = Cel.MergeArea
        Cel.UnMerge: Plg.Value = Cel.Value
    End If
Next Cel
End Sub

Bonne journée


1
Emi80110 Messages postés 52 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 13 janvier 2025 1
29 juin 2023 à 15:26

Merci pour votre aide, la solution précédente est adoptée et mise en place :-)

0
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 429
Modifié le 26 juin 2023 à 15:14

Bonjour

Option Explicit

Const FS = "Feuil1"
Const FB = "Feuil2"
Const coage = 1
Const cocon = 2
Const lideb = 2

Public Sub ok()
Dim cel As Range, contrat As String, adr As String
Dim li As Long, lifin As Long, lili As Long
Application.ScreenUpdating = False
' copie de FS
Sheets(FS).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = FB
' défusionnage colonne A
With Sheets(FB)
  lifin = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
  li = lideb
  ' defusionner colonne agence
  For li = lideb To lifin
    If .Cells(li, coage).MergeCells Then
      .Cells(li, coage).MergeCells = False
      Set cel = .Cells(li, coage)
      While li < lifin And .Cells(li + 1, coage).Value = ""
        li = li + 1
        cel.Copy .Cells(li, coage)
      Wend
    End If
  Next li
  ' defusionner colonne contrats
  For li = lideb To lifin
    If .Cells(li, cocon).MergeCells Then
      .Cells(li, cocon).MergeCells = False
      Set cel = .Cells(li, cocon)
      While li < lifin And .Cells(li + 1, cocon).Value = ""
        li = li + 1
        cel.Copy .Cells(li, cocon)
      Wend
    End If
  Next li
End With
End Sub

La macro se charge de la copie de la feuille source (FS)

RQ. B13:B32 n'a pas de contrat et n'est pas fusionnée normal ?

Cdlmnt

0
Emi80110 Messages postés 52 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 13 janvier 2025 1
29 juin 2023 à 14:24

Bonjour

merci @ccm81 StatutMembre je teste de suite.

Oui c'est normal pour les b13:b32, je n'ai pas systématiquement de contrat lié a chaque consommation mais merci de poser la question :-)

je reviens vers toi après test merci de ton aide.

0
Emi80110 Messages postés 52 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 13 janvier 2025 1
29 juin 2023 à 14:40

Re,

Alors c'est parfait, ca fonctionne parfaitement comme je le souhaitais a l'exception effectivement des contrats qui s'étendent sur les lignes là où n'y en avait pas. C'était bien normal. Du coup j'ai repris ta macro mais je ne vois pas où je dois la modifier pour ce "détail". Donc je suis preneuse de ton aide une fois de plus :-)

merci encore.

0
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 429
26 juin 2023 à 19:23

j'ai oublié de joindre ton fichier pour test

https://www.cjoint.com/c/MFArwTFjLTB

Cdlmnt

0
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 429
29 juin 2023 à 15:02

a l'exception effectivement des contrats qui s'étendent sur les lignes là où n'y en avait pas.

ça m'apprendra à faire du zèle ;-)  du coup une version plus claire

https://www.cjoint.com/c/MFDm75Ihm7B

Cdlmnt

0
Emi80110 Messages postés 52 Date d'inscription jeudi 30 septembre 2021 Statut Membre Dernière intervention 13 janvier 2025 1
29 juin 2023 à 15:26

C'est tout bon :-D merci beaucoup pour cette aide précieuse une fois de plus :-D

0