Positionner très précisément une forme

Bonjour, ne pouvant pas choisir de supprimer les contours de mes boutons de command, ou en choisir la couleur, j'ai décidé de les remplacer par des formes, auxquelles j'affecte mes macros. Mais j'aimerai pouvoir les aligner parfaitement et pour cela j'aimerai pouvoir choisir leur place exact sur la feuille comme c'est le cas avec les boutons de command ou on peut choisir le top, et left.

Pensez-vous que c'est possible ou est on forcé de les places sans précision possible? Merci

bonjour,

je pense que cela n'est pas possible sans passer par VBA.

ActiveSheet.Shapes("shape1").Top = 50
ActiveSheet.Shapes("shape1").Left = 50

Hello,

tu peux sélectionner tes formes, puis dans l'onglet outil dessin qui apparaît, tu as toutes les options disponibles.

capture

Sinon, tu peux aussi les positionner via VBA avec top et left, comme les command button.

Merci a vous. Pour ce que je peux faire (remplacer les boutons pour plus de paramétrages visuels possibles), il vaut mieux créer des formes (insertion/formes), ou des étiquettes controles ActiveX (developpeur/inserer/étiquette activeX)? Sachant que je vais affecter des macros à chaque "bouton". Merci

Pour ma part (mais je ne suis pas du tout un spécialiste VBA), je suis passé dès mes débuts aux formes. Un clic droit, affecter une macro, et hop.

On peut même pousser le vice et le mettre sur une jolie image représentative de la macro à lancer.

Dès lors, je ne vois vraiment pas ce que peut apporter le commandbutton ? (ce n'est pas une question rhétorique, j'aimerais avoir vos avis)

bonjour,

je pense que cela n'est pas possible sans passer par VBA.

ActiveSheet.Shapes("shape1").Top = 50
ActiveSheet.Shapes("shape1").Left = 50

merci, je dois coller cela à quel endroit? D'ailleurs les formes ajoutées n'ont pas de nom, ou alors je n'arrive pas à le trouver

Bonjour,

voici une macro te permettant d'ajuster les propriétés top et left de la forme sélectionnée (macro à mettre dans ton classeur ou dans ton classeur personnel)

Sub positionneforme()
    On Error GoTo errh
    With Selection
        t = InputBox(.Name & " TOP : valeur actuelle " & .Top & " , nouvelle valeur")
        If t <> "" Then .Top = Val(t)
        l = InputBox(.Name & " LEFT : valeur actuelle " & .Left & " , nouvelle valeur")
        If l <> "" Then .Left = Val(l)
    End With
    Exit Sub
errh:
    If Err = 1004 Then
        MsgBox "vous devez sélectionner une forme"
    Else
        MsgBox "une erreur est survenue " & Err & ":" & Err.Description
    End If
End Sub

Bonjour,

voici une macro te permettant d'ajuster les propriétés top et left de la forme sélectionnée (macro à mettre dans ton classeur ou dans ton classeur personnel)

Sub positionneforme()
    On Error GoTo errh
    With Selection
        t = InputBox(.Name & " TOP : valeur actuelle " & .Top & " , nouvelle valeur")
        If t <> "" Then .Top = Val(t)
        l = InputBox(.Name & " LEFT : valeur actuelle " & .Left & " , nouvelle valeur")
        If l <> "" Then .Left = Val(l)
    End With
    Exit Sub
errh:
    If Err = 1004 Then
        MsgBox "vous devez sélectionner une forme"
    Else
        MsgBox "une erreur est survenue " & Err & ":" & Err.Description
    End If
End Sub

Merci, je vais essayer cela. bon finalement j'ai réussi à positionner ma shape avec ta première macro, donc maintenant quand je lance ma macro la shape se place ou je veux. seul souci c'est que je veux qu'elle se place sous une autre shape, mais je ne connais pas ou la shape se termine, avec les boutons de command c'était simple car j'avais le top, et la heuteur (en pixel il me semble?) mais là pour les shapes je n'ai pas trouvé d'autres moyens que de les dimentionner en cm. donc si ma shape débute tout en haut de la page (top 0) et qu'elle fait 2,95cm, je ne sais pas à quel top placer ma 2eme shape pour qu'elle débute à 2.95cm et ainsi être en dessous de la première. une idée?

re-bonjour,

j'ai inclus dans la macro l'affichage des propriétés width (largeur) et height (hauteur)

Sub positionneforme()
    On Error GoTo errh
    With Selection
        MsgBox "propriétés de la forme sélectionnée : " & vbNewLine & "top :" & .Top & vbNewLine & "left :" & .Left & vbNewLine & "height : " & .Height & vbNewLine & "width : " & .Width
        t = InputBox(.Name & " TOP : valeur actuelle " & .Top & " , nouvelle valeur")
        If t <> "" Then .Top = Val(t)
        l = InputBox(.Name & " LEFT : valeur actuelle " & .Left & " , nouvelle valeur")
        If l <> "" Then .Left = Val(l)
    End With
    Exit Sub
errh:
    If Err = 1004 Then
        MsgBox "vous devez sélectionner une forme"
    Else
        MsgBox "une erreur est survenue " & Err & ":" & Err.Description
    End If
End Sub

Bonjour,

pour les placer dessus ou dessous dans le ruban "Mise en Forme utilise Avancer/Reculer

Personnellement pour mettre en place très rapidement mes shapes je positionne exactement la première sur le coint haut/Gauche d'une cellule en appuyant sur Alt en même temps que je la fait glisser.

Ensuite tu la sélectionnes puis Copier puis tu sélectionnes la cellule voisine et tu fais Coller (Elle se colle exactement au coint/Haut Gauche)

puis tu sélectionnes la cellule voisine et tu fais Coller

puis tu sélectionnes la cellule voisine et tu fais Coller

puis tu sélectionnes la cellule voisine et tu fais Coller...

Tu peux en aligner ainsi rapidement autant que tu veux ensuite tu peux les grouper puis les déplacer en bloc exactement ou tu veux.

Pour les positionner ensuite encore plus exactement l'objet étant sélectionné appuyer sur les flêches de direction pour les déplacer pixel par pixel...

A+

re-bonjour,

j'ai inclus dans la macro l'affichage des propriétés width (largeur) et height (hauteur)

Sub positionneforme()
    On Error GoTo errh
    With Selection
        MsgBox "propriétés de la forme sélectionnée : " & vbNewLine & "top :" & .Top & vbNewLine & "left :" & .Left & vbNewLine & "height : " & .Height & vbNewLine & "width : " & .Width
        t = InputBox(.Name & " TOP : valeur actuelle " & .Top & " , nouvelle valeur")
        If t <> "" Then .Top = Val(t)
        l = InputBox(.Name & " LEFT : valeur actuelle " & .Left & " , nouvelle valeur")
        If l <> "" Then .Left = Val(l)
    End With
    Exit Sub
errh:
    If Err = 1004 Then
        MsgBox "vous devez sélectionner une forme"
    Else
        MsgBox "une erreur est survenue " & Err & ":" & Err.Description
    End If
End Sub

Merci beaucoup, par contre j'ai bien un message me demandant combien je veux mettre en top et en left, mais pas combien je veux en longueur et en largeur. Manquerait-il les lignes height et width?

ha en fait c'est bon, j'ai repris tes lignes top et left et je les ai copiées / collée en changeant ce qu'il fallait. merci

Rechercher des sujets similaires à "positionner tres precisement forme"