Macro s'appliquant à l'endroit séléctionné

Edel

XLDnaute Nouveau
Bonjour.

D'abord je souhaite vous dire que je suis débutant dans la création de macro sur Excel et je vous prie de m'excuser si la sujet à déjà été traité mais ça fait déjà beaucoup de temps que je cherche et je n'ai pas de réponse convaincante.

Voici mon problème:

Je souhaite réaliser un petit tableau de mise en forme avec les bonnes bordures, les bonnes couleurs et un peu de texte pré-enregistré.
Je commence en enregistrant la macro en effectuant les actions à réaliser puis j’arrête l'enregistrement.
Lorsque je test la macro cela fonctionne, mais je souhaite pouvoir créer le tableau n'importe où sur la page contrairement au résultat que j'ai actuellement où ma macro applique toujours le tableau aux cellules initiales.

Bref, j'espère que je suis assez clair. Je veux simplement dire "Je veux que tu appliques toutes les commandes en prenant ce point de référence (qui n'est autre que la cellule sélectionné).

Merci :)
 

Staple1600

XLDnaute Barbatruc
Re : Macro s'appliquant à l'endroit séléctionné

Bonjour à tous

Edel [Bienvenue sur le forum]
En attendant ton fichier exemple avec ton code VBA actuel
Voici un petit exemple à tester sur une cellule qui commence un "tableau" (sans vide)
et qui fait ceci:
"Je veux que tu appliques toutes les commandes en prenant ce point de référence (qui n'est autre que la cellule sélectionné).

Code:
Sub Macro1()
Dim CELLULE_EN_COURS As Range, UN_TABLEAU As Range
Set CELLULE_EN_COURS = ActiveCell
Set UN_TABLEAU = CELLULE_EN_COURS.CurrentRegion
With UN_TABLEAU
    .Borders.LineStyle = 1
        With .Font
            .Bold = True
            .Name = "Calibri"
            .Size = 16
        End With
End With
End Sub
 

Edel

XLDnaute Nouveau
Re : Macro s'appliquant à l'endroit séléctionné

Merci Staple1600

Effectivement, cela crée affiche une bordure à l'endroit sélectionné, je vois bien que c'est "ActiveCell" qui va déterminer l'emplacement de mon tableau.

Voici mon code:

VB:
Sub Macro9()
'
' Macro9 Macro
'

'
    Range("C5:G13,D3:F3").Select
    Range("D3").Activate
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("D5:F13").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("D5:F13").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Macro s'appliquant à l'endroit séléctionné

Re

Essaies alors cette version "allégée" de ta macro ;)

Code:
Sub Macro9Bis()
Dim X0 As Range
Set X0 = ActiveCell
    With Union(X0.Offset(, 1).Resize(, 3), X0.Offset(2).Resize(9, 5))
        .Borders.LineStyle = 1
        .BorderAround 1, xlMedium
    End With
X0.Offset(2, 1).Resize(9, 3).Interior.Color = 255
End Sub
 

Edel

XLDnaute Nouveau
Re : Macro s'appliquant à l'endroit séléctionné

Okay, merci j'ai compris le principe, tu commences par introduire ta variable et tu la définis comme cellule active puis tu construis le tableau en "déplaçant ce point de repère comme dans "X0.Offset(2, 1)" puis tu ordonnes sur quelles coordonnées tu veux effectuer ton action.

Merci :)
 

Staple1600

XLDnaute Barbatruc
Re : Macro s'appliquant à l'endroit séléctionné

Re

Oui
Au final ma macro fait bien la même chose que ta macro ?
C'était bien là l'objet de ta question:
Je veux que tu appliques toutes les commandes en prenant ce point de référence (qui n'est autre que la cellule sélectionné).

PS: Pour infos:
On peut utiliser le VBA sans recourir au Select et autre Activate comme tu as pu le constater avec mon code.
Cela permet d'une part, d'alléger le code et d'autre part d'accélérer son exécution.
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 049
Membres
104 012
dernier inscrit
baffyt2