VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

guainflo

XLDnaute Junior
Bonjour,

Je souhaite à partir d'une macro se trouvant sur la feuille 1 (activé par un bouton sur la feuille 1), encadrer une plage de cellule sur la feuille 2.
La plage est dynamique, elle varie en fonction de 2 variables.

Avec une plage de cellule fixe, j'arrive à encadrer toutes les cellules, mais quand c'est variable, ca plante :

Voici le code pour une plage fixe :
Code:
Private Sub CommandButton1_Click()
        With Worksheets("Feuil2").Range("B2:D5").Borders
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
        End With
End Sub

Pour une plage variable, j'ai pensé à (mais erreur) :
Code:
Private Sub CommandButton1_Click()
        i = 2
        j = 3
        With Worksheets("Feuil2").Range(Cells(5, 3), Cells(5 + i, 3 + j)).Borders
                .LineStyle = xlContinuous
                .Weight = xlThin
                .ColorIndex = xlAutomatic
        End With
End Sub
 
Re : VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

Salut,

Une petite erreur de reference...
tes Cells(...) font reference a la feuile active (ici Feuil1) donc tu essaies
de faire un Range sur la Feuil2 d'une plage de la Feuil1, d'ou l'erreur.
Comme ceci ca passe mieux:
Code:
Option Explicit

Private Sub CommandButton1_Click()
    Dim i As Integer, j As Integer
    
    i = 2
    j = 3
    With Worksheets("Feuil2")
        With .Range(.Cells(5, 3), .Cells(5 + i, 3 + j)).Borders
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
    End With
End Sub
 
Re : VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

Merci Minick,

Ca marche, j'avais fait ca (sans les points devant cells et range) :

With Worksheets("Feuil2")
With Range(Cells(5, 3), Cells(5 + i, 3 + j)).Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End With

Encore merci, @+
 
Re : VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

Re,

J'ai un autre problème dans le même genre :

Je veut changer la mise en forme conditionnelle, je n'y arrive pas quand c'est dans une autre feuille (tjs en utilisant des indices pour sélectionner la plage) :
(quand l'utilisateur entre 1 dans la cellule, elle passe en vert claire, ...)
(dans un premier temps je change la police et la taille, cela marche)
Voici mon code :

Code:
Private Sub CommandButton1_Click()
    With Worksheets("Feuil2")
        With .Range(.Cells(5, 5), .Cells(8, 8)).Font
            .Name = "Comic Sans MS"
            .Size = 5
        End With
        With .Range(.Cells(5, 5), .Cells(8, 8)).Select
            .Selection.FormatConditions.Delete
            .Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="1"
            .Selection.FormatConditions(1).Interior.ColorIndex = 35
            .Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="2"
            .Selection.FormatConditions(2).Interior.ColorIndex = 36
            .Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
        Formula1:="3"
            .Selection.FormatConditions(3).Interior.ColorIndex = 45
        End With
    End With
End Sub

J'ai essayé plusieurs solutions mais ca ne marche pas (retirer les points devant les sélections, ...).
 
Re : VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

Re,

Selection n'est pas une propriete d'un range
tu ne peux donc pas faire un .Selection, un Selection aurai suffit
mais evite au maximum les Select

Code:
Option Explicit

Private Sub CommandButton1_Click()
    With Worksheets("Feuil2")
        With .Range(.Cells(5, 5), .Cells(8, 8)).Font
            .Name = "Comic Sans MS"
            .Size = 5
        End With
        With .Range(.Cells(5, 5), .Cells(8, 8))
            .FormatConditions.Delete
            With .FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="1")
                .Interior.ColorIndex = 35
            End With
            
            With .FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="2")
                .Interior.ColorIndex = 36
            End With
            
            With .FormatConditions.Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="3")
                .Interior.ColorIndex = 45
            End With
        End With
    End With
End Sub
 
Re : VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

Encore merci et j'en ai une dernière (j'espère), pour supprimer les valeurs dans les cellules de la plage.

Avec mon code, ca supprime rien :

Code:
Private Sub CommandButton1_Click()
    With Worksheets("Feuil2")
        With .Range(.Cells(5, 3), .Cells(200, 100))
            Selection.ClearContents
        End With
    End With
End Sub

En supprimant le sélection de selection.ClearContents, ca ne marche pas.
 
Re : VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

J'ai réfléchi très fort (lol, c'est pas dans mes capacités) et j'ai trouvé la solution (je pense que l'on peut l'écrire plus simplement) :

Code:
Private Sub CommandButton1_Click()
    With Worksheets("Feuil2")
        With .Range(.Cells(5, 3), .Cells(200, 100)).ClearContents
        End With
    End With
End Sub
 
Re : VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

Re,

J'ai encore besoin d'aide :

Pour l'orientation du texte d'une cellule.

Voila ce que me donne l'enregistreur de macro :

Code:
    Range("H11:H15").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 90
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = True
    End With

J'ai essayé plusieurs solutions dont celle la, marche pas :
Code:
    With Worksheets("Feuil2")
        With .Range(.Cells(5, 5))
            .Orientation = 90
        End With
    End With

Je suis un peu perdu la.
 
Re : VBA Sélectionner une plage de cellule sur une autre feuille pour l'encadrer

Bonjour le fil,

comme ceci:

Code:
    With Worksheets("Feuil2").Cells(5, 5)
      .Orientation = 90
    End With

mais si tu ne fais que ça sur cette cellule, ceci suffit:

Code:
Worksheets("Feuil2").Cells(5, 5).Orientation = 90
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
250
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
177
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
652
Réponses
3
Affichages
670
Réponses
3
Affichages
585
Retour