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

Résolu
Emi80110 Messages postés 69 Statut Membre -  
Emi80110 Messages postés 69 Statut Membre -

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 :-)

4 réponses

  1. cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   383
     

    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
    1. Emi80110 Messages postés 69 Statut Membre 2
       

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

      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     

    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
    1. Emi80110 Messages postés 69 Statut Membre 2
       

      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
    2. Emi80110 Messages postés 69 Statut Membre 2
       

      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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     

    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
    1. Emi80110 Messages postés 69 Statut Membre 2
       

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

      0