OVH Cloud OVH Cloud

Bouton

6 réponses
Avatar
HA
Bonjour et bonne année a tous

1ere question de l'année

je voudrais sur une feuille de calcul Excel qu'un bouton (VBA) soit fixe
lorsque je fais défilé la feuille.

Merci de me donner le code

6 réponses

Avatar
Sylvie
Bonjour,
A priori, la solution est la suivante :
1) clic droit de la souris sur le bouton
(fait apparaître un menu contextuel)
2) choisir format de contrôle
3) onglet propriété
4) cocher la case ne pas déplacer ou dimensionner avec les
cellules.
-----Message d'origine-----
Bonjour et bonne année a tous

1ere question de l'année

je voudrais sur une feuille de calcul Excel qu'un bouton
(VBA) soit fixe

lorsque je fais défilé la feuille.

Merci de me donner le code


.



Avatar
AV
je voudrais sur une feuille de calcul Excel qu'un bouton (VBA) soit fixe
lorsque je fais défilé la feuille.


* Le mettre en haut et figer les volets en dessous
* L'intégrer à une barre d'outils

AV

Avatar
sabatier
bonjour sylvie
alain a raison (pour une fois, cela mérite d'être souligné et ce
compliment doit faire office de cadeau d'anniv'), la fonctionnalité que
tu évoques pourrait laisser à croire que le bouton ne bouge pas, ce qui
est vrai si tu ajoutes des lignes ou des colonnes mais, hélas! ce qui
est faux lorsque tu actionnes l'ascenseur...
jps

Sylvie wrote:

Bonjour,
A priori, la solution est la suivante :
1) clic droit de la souris sur le bouton
(fait apparaître un menu contextuel)
2) choisir format de contrôle
3) onglet propriété
4) cocher la case ne pas déplacer ou dimensionner avec les
cellules.
-----Message d'origine-----
Bonjour et bonne année a tous

1ere question de l'année

je voudrais sur une feuille de calcul Excel qu'un bouton
(VBA) soit fixe

lorsque je fais défilé la feuille.

Merci de me donner le code


.





Avatar
JLuc
Salut HA,


Bonjour et bonne année a tous

1ere question de l'année

je voudrais sur une feuille de calcul Excel qu'un bouton (VBA) soit
fixe lorsque je fais défilé la feuille.

Merci de me donner le code


une solution qui n'est pas de moi, voir signature plus bas
une adaptation simplifiée d'une autre combine.
Conditions de fonctionnement:
- les boutons ou objets doivent être tous du même type(CommandButton ou
Bouton ou case à cocher,
etc..)

- les boutons ou objets doivent avoir un suffixe de 1 à N ( dans l'exemple
CommandButton1 à 8)

Les 5 premières lignes(5 variables) peuvent être modifiées.

Autrement , je peux transmettre un fichier *:xls qui gère tous les types
objets,
avec choix des objets à traités.

'******************* dans le module de la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
DesBoutonsQuiSuivent
End Sub

'******************* dans un module standard
Sub DesBoutonsQuiSuivent()

nb_boutons = 8 ' --->> à adapter

enLigne = False ' --->> mettre False si boutons en colonne

espace = 10 ' --->> espacement des boutons

decalCol = 3 ' --->> 1 = 1er bouton sur la 1ère colonne visible

decalLi = 5 ' --->> 1 = 1er bouton sur la 1ère ligne visible

ReDim dimensionBouton(1 To nb_boutons)
Set plg = ActiveWindow.VisibleRange
colPlg = plg.Columns.Count
y = plg.Item(decalCol).Column
x = plg.Item(colPlg * decalLi).Row
x1 = Cells(x, y).Left
y1 = Cells(x, y).Top

' --->> le <<CommandButton>> est à adapter
With ActiveSheet.Shapes("CommandButton" & 1)
If enLigne = True Then 'si les boutons sont sur 1 ligne
.Left = x1
.Top = y1
dimensionBouton(1) = .Width
Else 'si les boutons sont sur 1 colonne
.Left = x1
.Top = y1
dimensionBouton(1) = .Height
End If
End With

For i = 2 To nb_boutons
' --->> le <<CommandButton>> est à adapter
With ActiveSheet.Shapes("CommandButton" & i)
If enLigne = True Then 'si les boutons sont sur 1 ligne
For i2 = 1 To UBound(dimensionBouton)
dimen = dimen + dimensionBouton(i2)
Next
.Left = x1 + dimen + ((i - 1) * espace)
.Top = y1
dimensionBouton(i) = .Width
Else 'si les boutons sont sur 1 colonne
For i2 = 1 To UBound(dimensionBouton)
dimen = dimen + dimensionBouton(i2)
Next
.Left = x1
.Top = y1 + dimen + ((i - 1) * espace)
dimensionBouton(i) = .Height
End If
dimen = 0
End With
Next
Set plg = Nothing
End Sub ' ajf

'**************************************
--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}

Avatar
HA
Je suis ok pour que tu transmette ton fichier a la même adresse que pour ton
modèle de fax

Merci
"JLuc" a écrit dans le message de news:
3ffdc1cb$0$28704$
Salut HA,


Bonjour et bonne année a tous

1ere question de l'année

je voudrais sur une feuille de calcul Excel qu'un bouton (VBA) soit
fixe lorsque je fais défilé la feuille.

Merci de me donner le code


une solution qui n'est pas de moi, voir signature plus bas
une adaptation simplifiée d'une autre combine.
Conditions de fonctionnement:
- les boutons ou objets doivent être tous du même type(CommandButton ou
Bouton ou case à cocher,
etc..)

- les boutons ou objets doivent avoir un suffixe de 1 à N ( dans
l'exemple

CommandButton1 à 8)

Les 5 premières lignes(5 variables) peuvent être modifiées.

Autrement , je peux transmettre un fichier *:xls qui gère tous les types
objets,
avec choix des objets à traités.

'******************* dans le module de la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
DesBoutonsQuiSuivent
End Sub

'******************* dans un module standard
Sub DesBoutonsQuiSuivent()

nb_boutons = 8 ' --->> à adapter

enLigne = False ' --->> mettre False si boutons en colonne

espace = 10 ' --->> espacement des boutons

decalCol = 3 ' --->> 1 = 1er bouton sur la 1ère colonne visible

decalLi = 5 ' --->> 1 = 1er bouton sur la 1ère ligne visible

ReDim dimensionBouton(1 To nb_boutons)
Set plg = ActiveWindow.VisibleRange
colPlg = plg.Columns.Count
y = plg.Item(decalCol).Column
x = plg.Item(colPlg * decalLi).Row
x1 = Cells(x, y).Left
y1 = Cells(x, y).Top

' --->> le <<CommandButton>> est à adapter
With ActiveSheet.Shapes("CommandButton" & 1)
If enLigne = True Then 'si les boutons sont sur 1 ligne
.Left = x1
.Top = y1
dimensionBouton(1) = .Width
Else 'si les boutons sont sur 1 colonne
.Left = x1
.Top = y1
dimensionBouton(1) = .Height
End If
End With

For i = 2 To nb_boutons
' --->> le <<CommandButton>> est à adapter
With ActiveSheet.Shapes("CommandButton" & i)
If enLigne = True Then 'si les boutons sont sur 1 ligne
For i2 = 1 To UBound(dimensionBouton)
dimen = dimen + dimensionBouton(i2)
Next
.Left = x1 + dimen + ((i - 1) * espace)
.Top = y1
dimensionBouton(i) = .Width
Else 'si les boutons sont sur 1 colonne
For i2 = 1 To UBound(dimensionBouton)
dimen = dimen + dimensionBouton(i2)
Next
.Left = x1
.Top = y1 + dimen + ((i - 1) * espace)
dimensionBouton(i) = .Height
End If
dimen = 0
End With
Next
Set plg = Nothing
End Sub ' ajf

'**************************************
--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}





Avatar
JLuc
Salut HA,

Comme je l'ai signaler, cette solution n'est pas de moi,
pour recevoir le dit fichier contacter :

à

C'est a lui que revient le merite de ce code, j'ai juste preciser
qu'il existait et ai fais un copier/coller de son post

j'espere avoir ete utile
A+
JLuc

Je suis ok pour que tu transmette ton fichier a la même adresse que
pour ton modèle de fax

Merci
"JLuc" a écrit dans le message de news:
3ffdc1cb$0$28704$
Salut HA,


Bonjour et bonne année a tous

1ere question de l'année

je voudrais sur une feuille de calcul Excel qu'un bouton (VBA) soit
fixe lorsque je fais défilé la feuille.

Merci de me donner le code


une solution qui n'est pas de moi, voir signature plus bas
une adaptation simplifiée d'une autre combine.
Conditions de fonctionnement:
- les boutons ou objets doivent être tous du même type(CommandButton
ou Bouton ou case à cocher,
etc..)

- les boutons ou objets doivent avoir un suffixe de 1 à N ( dans
l'exemple CommandButton1 à 8)

Les 5 premières lignes(5 variables) peuvent être modifiées.

Autrement , je peux transmettre un fichier *:xls qui gère tous les
types objets,
avec choix des objets à traités.

'******************* dans le module de la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
DesBoutonsQuiSuivent
End Sub

'******************* dans un module standard
Sub DesBoutonsQuiSuivent()

nb_boutons = 8 ' --->> à adapter

enLigne = False ' --->> mettre False si boutons en colonne

espace = 10 ' --->> espacement des boutons

decalCol = 3 ' --->> 1 = 1er bouton sur la 1ère colonne visible

decalLi = 5 ' --->> 1 = 1er bouton sur la 1ère ligne visible

ReDim dimensionBouton(1 To nb_boutons)
Set plg = ActiveWindow.VisibleRange
colPlg = plg.Columns.Count
y = plg.Item(decalCol).Column
x = plg.Item(colPlg * decalLi).Row
x1 = Cells(x, y).Left
y1 = Cells(x, y).Top

' --->> le <<CommandButton>> est à adapter
With ActiveSheet.Shapes("CommandButton" & 1)
If enLigne = True Then 'si les boutons sont sur 1 ligne
.Left = x1
.Top = y1
dimensionBouton(1) = .Width
Else 'si les boutons sont sur 1 colonne
.Left = x1
.Top = y1
dimensionBouton(1) = .Height
End If
End With

For i = 2 To nb_boutons
' --->> le <<CommandButton>> est à adapter
With ActiveSheet.Shapes("CommandButton" & i)
If enLigne = True Then 'si les boutons sont sur 1 ligne
For i2 = 1 To UBound(dimensionBouton)
dimen = dimen + dimensionBouton(i2)
Next
.Left = x1 + dimen + ((i - 1) * espace)
.Top = y1
dimensionBouton(i) = .Width
Else 'si les boutons sont sur 1 colonne
For i2 = 1 To UBound(dimensionBouton)
dimen = dimen + dimensionBouton(i2)
Next
.Left = x1
.Top = y1 + dimen + ((i - 1) * espace)
dimensionBouton(i) = .Height
End If
dimen = 0
End With
Next
Set plg = Nothing
End Sub ' ajf

'**************************************
--
Amicalement

Jean-François Aubert
{Vaudois de la Côte Lémanique}