Fusionner si bordure

Carochris13010 Messages postés 7 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

Je cherche une Macro pouvant fusionner des cellules d’une colonne en fonction de leurs bordures.

Données de la colonne A fusionnées si bordures épaisses, Idem pour colonne B …

Je vous remercie

3 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    voici un exemple avec la colonne A fusionner vers le haut à adapter:

    Sub For_X_to_Next_Ligne()
    Dim FL1 As Worksheet, NoCol As Integer
    Dim NoLig As Long
        Set FL1 = Worksheets("Feuil1")
        NoCol = 1 'lecture de la colonne 1
        For NoLig = 1 To Range("A" & Rows.Count).End(xlUp)
            FL1.Cells(NoLig, NoCol).Select
     If Selection.Borders(xlEdgeBottom).Weight = xlMedium Then 'bordure basse
         Range("A" & NoLig & ":A" & NoLig - 1).Select ' fusionner vers le haut
        Selection.Merge
            End If
            Next
        Set FL1 = Nothing
    End Sub
    


    Et si tu veux supprimer les alertes:

    Sub For_X_to_Next_Ligne()
    Dim FL1 As Worksheet, NoCol As Integer
    Dim NoLig As Long
        Set FL1 = Worksheets("Feuil1")
        NoCol = 1 'lecture de la colonne 1
         Application.DisplayAlerts = False
        For NoLig = 1 To Range("A" & Rows.Count).End(xlUp)
            FL1.Cells(NoLig, NoCol).Select
     If Selection.Borders(xlEdgeBottom).Weight = xlMedium Then
         Range("A" & NoLig & ":A" & NoLig - 1).Select ' fusionner vers le haut
        Selection.Merge
            End If
            Next
        Set FL1 = Nothing
         Application.DisplayAlerts = True
    End Sub
    
    


    j'ai pris la bordure basse de la cellule. Si tu veux changer sers toi de l'enregistreur de macro pour avoir le code en mettant la bordure où tu veux

    @+ Le Pivert
    0
  2. Carochris13010
     
    Merci beaucoup, je viens de tester cette Macro et celle ne fonctionne malheureusement pas sur mon tableau.
    Cette dernière bloque à cette étape : "For NoLig = 1 To Range("A" & Rows.Count).End(xlUp)"

    Cordialement
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      Il faut vérifier si le nom de la feuille et la colonne sont corrects

      Essaie de voir si cela te donne la dernière ligne:

      Msgbox Range("A" & Rows.Count).End(xlUp)
      0
    2. Carochris13010 > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      Je suis vraiment désolé mais mes notions de VBA sont assez faibles, où devrais-je taper cette commande ?
      0
    3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > Carochris13010
       
      Tu lances bien ta macro

      For_X_to_Next_Ligne()

      Tu mets cela a la place pour le test, c'est tout
      0
    4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      Voilà un exemple:

      http://www.cjoint.com/c/GJlqe42F1QQ
      0
    5. Carochris13010
       
      Je vous remercie, en fait, je ce dont je cherche à réaliser c'est seulement fusionner les cellules vides avec la cellule renseignée ce trouvant au dessus.
      Je vous mets le lien de mon tableau , si jamais vous avez une solution.
      Je vous remercie en tout cas !

      http://www.cjoint.com/c/GJlsmfcve14
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voilà

    http://www.cjoint.com/c/GJmghyVaaNQ
    0