IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro - bordure haute et basse [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Par défaut Macro - bordure haute et basse
    Bonsoir,

    Je développe une macro qui dessine des équipements dans une armoire.
    chacun des équipements est représenté par une ou plusieurs cellules encadré d'une bordure


    hors, si je souhaite supprimer un équipement (le 2 par exemple), j'ai tendance à :
    _____supprimer le texte,
    _____supprimer toutes les de la celule,
    _____supprimer la couleur de fond,


    mais la ligne inférieure de l'équipement 1 a disparu (tout comme celle du coté)

    Si je me rappelle bien, dans une très vieille version d'excel, chaque cellule avait sa bordure haute et basse (ce qui entraînait souvent des désagréments, j'en conviens)

    Ce système existe-t-il toujours? Ainsi, je pourrais supprimer des bordures d'une cellule sans toucher à celle contiguës.
    est-ce faisable en macro?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Une macro qui rétablit les bordures sur les cellules uniques ou fusionnées :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     
    Sub RetablirLesBordures()
     
    Dim LigneTitre As Long
    Dim NbLignes As Long
    Dim ColonneBordure As Long
    Dim TypeDeTrait As Long
    Dim PositionDerniereLigneFusionnee As Long
     
    Dim I As Long
     
    Dim CelluleFusionnee As Variant
     
            TypeDeTrait = 2  ' Trait très fin : xlHairline 1, moyen : xlMedium -4138, épais : xlThick 4 , fin : xlThin 2
            LigneTitre = 1
            ColonneBordure = 1
            NbLignes = ActiveSheet.UsedRange.Rows.Count
     
     
     
            For I = LigneTitre + 1 To NbLignes
                If IsEmpty(Cells(I, ColonneBordure)) Then
                    With Cells(I, ColonneBordure)
                            .Borders(xlEdgeLeft).LineStyle = xlNone
                            .Borders(xlEdgeTop).LineStyle = xlNone
                            .Borders(xlEdgeBottom).LineStyle = xlNone
                            .Borders(xlEdgeRight).LineStyle = xlNone
                    End With
                End If
            Next I
     
     
           For I = LigneTitre + 1 To NbLignes
     
               CelluleFusionnee = Cells(I, ColonneBordure).MergeCells
     
               If CelluleFusionnee = True Then
     
                    PositionDerniereLigneFusionnee = DerniereCelluleFusionnee(I, NbLignes, ColonneBordure)
     
                    With Range(Cells(I, ColonneBordure), Cells(PositionDerniereLigneFusionnee, ColonneBordure))
     
                         .Borders(xlEdgeTop).Weight = TypeDeTrait
                         .Borders(xlEdgeBottom).Weight = TypeDeTrait
                         .Borders(xlEdgeLeft).Weight = TypeDeTrait
                         .Borders(xlEdgeRight).Weight = TypeDeTrait
     
                    End With
     
                    I = PositionDerniereLigneFusionnee + 1
     
              Else
     
                  If Not IsEmpty(Cells(I, ColonneBordure)) Then
     
                        With Cells(I, ColonneBordure)
                            .Borders(xlEdgeTop).Weight = TypeDeTrait
                            .Borders(xlEdgeBottom).Weight = TypeDeTrait
                            .Borders(xlEdgeLeft).Weight = TypeDeTrait
                            .Borders(xlEdgeRight).Weight = TypeDeTrait
                        End With
                  End If
     
              End If
     
            Next I
     
    End Sub
    Et pour trouver la dernière cellule fusionnée avec une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Function DerniereCelluleFusionnee(LigneDepart As Long, LigneFin As Long, ColonneReference As Long)
     
    Dim CelluleFisionnee2 As Variant
    Dim J As Long
     
                DerniereCelluleFusionnee = 0
                For J = LigneDepart + 1 To LigneFin
                     CelluleFisionnee2 = Cells(J, ColonneReference).MergeCells
                     If CelluleFisionnee2 = True Then
                            DerniereCelluleFusionnee = J
                     Else
                        Exit For
                     End If
                Next J
     
    End Function
    Cordialement.
    Dernière modification par Invité ; 04/06/2013 à 07h19.

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Je me demande pourquoi tu supprimes les bordures si ce que tu désires c'est les conserver.

    Quelle commande utilises-tu pour effacer la cellule?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Février 2013
    Messages : 66
    Par défaut
    merci.

    pour te répondre. jusque la, les icones classiques pour mettre ou supprimer les bordures.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WM18] Android - Zone répétée - affichage dans rupture haute ou basse
    Par fdelepine dans le forum Windev Mobile
    Réponses: 1
    Dernier message: 25/08/2013, 20h46
  2. [XL-2007] Macro bordure si.
    Par crashoveride69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/04/2013, 13h35
  3. problème macro bordures
    Par casefayere dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/03/2009, 19h41
  4. Hautes et Basses frequences FFT
    Par johnkhm dans le forum Calcul scientifique
    Réponses: 20
    Dernier message: 25/04/2008, 12h00
  5. Réunir 2 conditions val Haut et basse ?
    Par Jimy6000 dans le forum Excel
    Réponses: 51
    Dernier message: 23/02/2008, 08h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo