XL 2016 Cellule Active

Jgral

XLDnaute Nouveau
Bonjour,

Lorsque je clique sur une checkbox ma cellule active devient celle où se trouve la checkBox alors que je souhaite que la cellule active reste celle sur laquelle j'ai cliqué juste avant la checkBox auriez vous des idées ?

VB:
Private Sub CheckBox6_Click()
    If CheckBox6 = True Then
        CheckBox6.Font.Bold = True
        'Dimensions et position de la zone de texte
        H = 20 '<-- hauteur
        W = 175 '<-- largeur
        L = ActiveCell.Column  '<-- position horizontale
        T = ActiveCell.Row '<-- position verticale'Insertion de la zone de texte
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, L, T, W, H).Select
        Selection.Name = "ztxt1" '<-- nom de la zone de texte
       
        'Paramètres de la zone de texte
   
        With Selection
            '.Name = "txt2" '<-- nom de la zone de texte
            .Characters.Text = "Convention sur Parcelle"
            '.HorizontalAlignment = xlCenter '<-- texte centré horizontalement
            .VerticalAlignment = xlCenter '<-- texte centré verticalement
            .ShapeRange.Fill.ForeColor.SchemeColor = 1 '<-- couleur de fond
            .ShapeRange.Line.Weight = 2.5 '<-- épaisseur du cadre
            .ShapeRange.Line.ForeColor.SchemeColor = 7 '<-- couleur du cadre
        End With
       
        'Mise en forme du texte
        With Selection.Font
            .Name = "Calibri" '<-- police
            .Size = 16 '<-- taille
            .Bold = True '<-- mise en gras
            .ColorIndex = 1 '<-- couleur
        End With
        Range("A1").Activate '<-- quitter la sélection de la zone de texte
    Else
        CheckBox6.Font.Bold = False
    End If
End Sub
 
Solution
Bonsoir le fil

Si cela peut servir, un moyen simple de dessiner une forme en la paramétrant
VB:
Sub testA()
Dim rng As Range
Set rng = Cells(Rows.Count, 1).End(3).Offset(, 1)
Draw_Shape msoShapeRectangle, rng.Address, "Convention sur Parcelle"
End Sub
Sub testB()
Dim rng As Range
Set rng = Range("C15")
'on peut choisir la forme
Draw_Shape msoShapeRoundedRectangularCallout, rng.Address, "Excel-Downloads.com"
End Sub

Function Draw_Shape(ShapeType As MsoAutoShapeType, celAdr As String, Texte As String) As Shape
With ActiveSheet.Range(celAdr)
Set Draw_Shape = ActiveSheet.Shapes.AddShape(ShapeType, .Left + 5, .Top, 175, 20)
  With Draw_Shape
    .TextFrame.Characters.Text = Texte
    .TextFrame.HorizontalAlignment = xlHAlignCenter...

Jgral

XLDnaute Nouveau
Merci de votre réponse mais ça ne fonctionner pas
VB:
Private Sub CheckBox6_Click()
    If CheckBox6 = True Then
        CheckBox6.Font.Bold = True
        'Dimensions et position de la zone de texte
        H = 20 '<-- hauteur
        W = 175 '<-- largeur
        L = ActiveCell.Column  '<-- position horizontale
        T = ActiveCell.Row '<-- position verticale'Insertion de la zone de texte
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, L, T, W, H).Select
        'Selection.Name = "ztxt1" '<-- nom de la zone de texte
        
        'Paramètres de la zone de texte
    
        With Selection
            '.Name = "txt2" '<-- nom de la zone de texte
            .Characters.Text = "Convention sur Parcelle"
            '.HorizontalAlignment = xlCenter '<-- texte centré horizontalement
            .VerticalAlignment = xlCenter '<-- texte centré verticalement
            .ShapeRange.Fill.ForeColor.SchemeColor = 1 '<-- couleur de fond
            .ShapeRange.Line.Weight = 2.5 '<-- épaisseur du cadre
            .ShapeRange.Line.ForeColor.SchemeColor = 7 '<-- couleur du cadre
        End With
        
        'Mise en forme du texte
        With Selection.Font
            .Name = "Calibri" '<-- police
            .Size = 16 '<-- taille
            .Bold = True '<-- mise en gras
            .ColorIndex = 1 '<-- couleur
        End With
        Range("A1").Activate '<-- quitter la sélection de la zone de texte
    Else
        CheckBox6.Font.Bold = False
    End If
    Cell(T, L).Select
End Sub
 

Jgral

XLDnaute Nouveau
Je suis désolé cela ne fonctionne pas voici le fichier pour faciliter la compréhension. Dans le "menu défilant d'en haut" je vous invite à cliquer sur la CheckBox "Convention". Cela fera apparaître une zone de texte en haut à gauche de la fenêtre. Or je souhaite que cette zone de texte apparaisse dans la dernière cellule active avant le clic sur la CheckBox
 

Pièces jointes

  • Concepteur d'étude.xlsm
    669 KB · Affichages: 6

youky(BJ)

XLDnaute Barbatruc
Voici rectifié,
j'ai décaler ligne L et T et ajouté .Top et .Left
Bruno
VB:
Private Sub CheckBox6_Click()
L = ActiveCell.Column  '<-- position horizontale
T = ActiveCell.Row '<-- position verticale'Insertion de la zone de texte
    If CheckBox6 = True Then
        CheckBox6.Font.Bold = True
        'Dimensions et position de la zone de texte
        H = 20 '<-- hauteur
        W = 175 '<-- largeur
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, L, T, W, H).Select
        'Selection.Name = "ztxt1" '<-- nom de la zone de texte
        
        'Paramètres de la zone de texte
    
        With Selection
            '.Name = "txt2" '<-- nom de la zone de texte
            .Characters.Text = "Convention sur Parcelle"
            '.HorizontalAlignment = xlCenter '<-- texte centré horizontalement
            .VerticalAlignment = xlCenter '<-- texte centré verticalement
            .ShapeRange.Fill.ForeColor.SchemeColor = 1 '<-- couleur de fond
            .ShapeRange.Line.Weight = 2.5 '<-- épaisseur du cadre
            .ShapeRange.Line.ForeColor.SchemeColor = 7 '<-- couleur du cadre
            .Top = Cells(T, L).Top + 10
            .Left = Cells(T, L).Left + 10
        End With
        
        'Mise en forme du texte
        With Selection.Font
            .Name = "Calibri" '<-- police
            .Size = 16 '<-- taille
            .Bold = True '<-- mise en gras
            .ColorIndex = 1 '<-- couleur
        End With
        Range("A1").Activate '<-- quitter la sélection de la zone de texte
    Else
        CheckBox6.Font.Bold = False
    End If
End Sub
 

laurent950

XLDnaute Barbatruc
Bonjour youky(BJ), Jgral, Le forum.

Une autres solutions : (Les 2 sont correctes)
Pour :

VB:
' <-- position horizontale
        T = Range(ActiveCell.Address).Top
        Pour :
                  T = ActiveCell.Row '<-- position verticale'Insertion de la zone de texte
                  .Top = Cells(T, L).Top + 10
' <-- position verticale'Insertion de la zone de texte
        L = Range(ActiveCell.Address).Left
        Pour :
                 L = ActiveCell.Column  '<-- position horizontale                   
                 .Left = Cells(T, L).Left + 10

VB:
Private Sub CheckBox6_Click()
    If CheckBox6 = True Then
        CheckBox6.Font.Bold = True
        'Dimensions et position de la zone de texte
        Dim H As Single
        H = 20 '<-- hauteur
        Dim W As Single
        W = 175 '<-- largeur
        Dim L As Single
        L = Range(ActiveCell.Address).Left '<-- position horizontale
        Dim T As Single
        T = Range(ActiveCell.Address).Top '<-- position verticale'Insertion de la zone de texte
        ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, L, T, W, H).Select
    
        'Paramètres de la zone de texte
        With Selection
            '.Name = "txt2" '<-- nom de la zone de texte
            .Characters.Text = "Convention sur Parcelle"
            '.HorizontalAlignment = xlCenter '<-- texte centré horizontalement
            .VerticalAlignment = xlCenter '<-- texte centré verticalement
            .ShapeRange.Fill.ForeColor.SchemeColor = 1 '<-- couleur de fond
            .ShapeRange.Line.Weight = 2.5 '<-- épaisseur du cadre
            .ShapeRange.Line.ForeColor.SchemeColor = 7 '<-- couleur du cadre
        End With
    
        'Mise en forme du texte
        With Selection.Font
            .Name = "Calibri" '<-- police
            .Size = 16 '<-- taille
            .Bold = True '<-- mise en gras
            .ColorIndex = 1 '<-- couleur
        End With
        'Range("A1").Activate '<-- quitter la sélection de la zone de texte
        ActiveCell.Select '<-- quitter la sélection de la zone de texte
    Else
        CheckBox6.Font.Bold = False
    End If
    ActiveCell.Select '<-- quitter la sélection de la zone de texte
End Sub

Laurent
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Si cela peut servir, un moyen simple de dessiner une forme en la paramétrant
VB:
Sub testA()
Dim rng As Range
Set rng = Cells(Rows.Count, 1).End(3).Offset(, 1)
Draw_Shape msoShapeRectangle, rng.Address, "Convention sur Parcelle"
End Sub
Sub testB()
Dim rng As Range
Set rng = Range("C15")
'on peut choisir la forme
Draw_Shape msoShapeRoundedRectangularCallout, rng.Address, "Excel-Downloads.com"
End Sub

Function Draw_Shape(ShapeType As MsoAutoShapeType, celAdr As String, Texte As String) As Shape
With ActiveSheet.Range(celAdr)
Set Draw_Shape = ActiveSheet.Shapes.AddShape(ShapeType, .Left + 5, .Top, 175, 20)
  With Draw_Shape
    .TextFrame.Characters.Text = Texte
    .TextFrame.HorizontalAlignment = xlHAlignCenter: .TextFrame.VerticalAlignment = xlVAlignCenter
    With .TextFrame.Characters.Font
    .Name = "Calibri": .ColorIndex = 1: .Size = 16: .Bold = -1
    End With
    .Fill.ForeColor.SchemeColor = 1: .Line.Weight = 2.5: .Line.ForeColor.SchemeColor = 7
  End With
End With
End Function
PS: Ceci n'est qu'un exemple illustratif dont le demandeur s'inspirera ou pas ;)
 

Discussions similaires

Réponses
0
Affichages
352
Réponses
1
Affichages
432

Statistiques des forums

Discussions
315 095
Messages
2 116 170
Membres
112 676
dernier inscrit
little_b