Mise en place d'un bouton par l'intermédiaire d'un code VBA

Bonsoir,

Par l'intermédaire de ce code, un bouton relié à la procédure "Tri_Mise_en_page_finale_Total_Enregistrement" se met en place sur une feuille créée à un certain moment donné.

J'ai toutefois deux soucis :

1) Est-il possible de placer ce bouton à la fin d'une liste de grandeur variable ? Si oui, je pourrais faire référence à la valeur d'une variante déjà définie plus vite et qui compte le nombre de lignes présentes ?

2) Pour l'instant, le texte suivant est placé dans le bouton : "Tri et mise en page finale", mais j'aimerais pouvoir écrire plus de texte, sur deux ou trois lignes. Mais je n'y arrive pas, mon code bloque. Savez-vous ce que je dois corriger ?

Sub Mise_en_place_bouton()

    Sheets("RepListeQuellensteuer").Select
    ActiveSheet.Buttons.Add(300, 0, 300, 80).Select 
    Selection.OnAction = "Tri_Mise_en_page_finale_Total_Enregistrement"
    Selection.Characters.Text = "Tri et mise en page finale"

    Range("A1").Select
End Sub

Avec mes bonnes salutations.

Rebonjour,

Je n'ai pas trop de succès avec cette question.

Si quelqu'un pouvait toutefois tenter de m'aider ou simplement me dire si une partie de ce que je voudrais est impossible.

J'ai continué à faire des essais et suis arrivé au résultat suivant en ce qui concerne le texte dans le bouton :

Selection.Characters.Text = "Tri et mise en page finale" & vbNewLine & "ligne 2" & vbNewLine & "ligne 3"

Toutefois, si le texte est bien mis sur trois lignes, il y a un signe bizarre qui vient se placer à la fin de la 1ère et 2ème ligne. J'ai donc le résultat approximatif suivant :

Tri et mise en page finale¢

ligne 2¢

ligne 3

J'ai essayé de supprimer des & dans le code, mais ça ne joue alors plus, mon code bloque.

Merci donc à tous ceux qui pourrait me venir en aide.

Bonne soirée

bonjour à tous,

essaye çà.

Selection.Characters.Text = "Tri et mise en page finale" & Chr(10) & "ligne 2" & Chr(10) & "ligne 3"

Claude.

Salut,

A la place de Vbnewline esssaies plutôt Chr(13)

A te lire,

Souri84

Edit 2: j'ai pas de chance aujourd'hui...2 fois Nad, 1 fois Claude..... Je réponds toujours quelques secondes trop tard... et en plus je mettais trompé... 13 au lieu de 10.... mince alors...

Salut souri84,

Rassure-toi, çà marche aussi avec Chr(13)

d'ailleurs je ne sais plus quel est vraiment le bon ?

Claude.

Bonjour,

1 à O pour Souris84 !

Je vous avais dis qu'avec ma solution, j'avais des signes spéciaux (en fait des points d'interrogation entourés d'un carré) en fin de lignes 1 et 2.

Avec la solution de Claude, ces signes spéciaux se trouvent entre les trois parties de mon texte et le tout sur une seule ligne.

Par contre la solution de Souris84 a parfaitement résolu mon problème.

Un grand, grand merci à tous deux.

Je n'ai par contre aucune réponse concernant la deuxième partie de ma question.

Est-il vraiment impossible de faire apparaître ce bouton en fin de liste, avec à chaque fois un nombre de lignes différents, plutôt qu'à un endroit fixe, en début de feuille ?

Bonne journée

Concrétement, tu veux qu'un bouton soit toujours placé en fonction de la dernière ligne ? c'est bien ça ?

Une macro de Myta:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next

 With Me.CommandButton1
    .Left = 750 ' modifies le nombre pour le mettre où tu le souhaites. Plus le nombre est élevé, plus le bouton sera à droite.
    .Top = ActiveCell.Offset(1, 0).Top 'une ligne en dessous. change le 1 pour ton choix
    .Visible = True
End With
End Sub

Dès que tu bouges ton curseur, ton bouton te suit.

Je ne sais pas si j'ai bien compris ta demande.... A voir,

A+

Souri84

Merci infiniment Souris84 de continuer à t'intéresser à mon problème.

J'ai essayé d'utiliser le code que tu proposes, mais je ne sais absolument pas où le placer dans mon code, fourni au tout début de ce fil. J'ai fait plusieurs essais, malheureusement infructueux.

Saurais-tu m'aider, ou qui que ce soit d'autre ?

Je reviens également à l'autre partie de ma question au sujet du retour à la ligne dans un bouton. J'ai indiqué dans une précédente réponse que tout roulait avec ta proposition d'utiliser Chr(13). J'avais indiqué cela après avoir fait des essais au travail où j'utilise Excel 2003. Mais en faisant les mêmes essais à la maison (Excel 2007) plus aucune des possibilités avancées (Chr 10, Chr 13, vbNewLine) ne fonctionne.

Qui sait pourquoi ?

Avec mes bonnes salutations.

Salut Yvouille,

on ne laisse pas tomber les gens présents sur ce forum (enfin on essayes...)

Sinon, le code que je t'ai fourni pour ton bouton "flottant" est à placer dans le module de la feuille concernée, tu sais dans VBA, dans les microsoft excel object où tu peux également trouver le thisworkbook.

Et bien tu places ton code dans la feuille VBA de la feuille Excel... (houla.... j'espère que tu m'as compris...)

Dis moi si tu as des soucis....

Souri84

Salut Souris84, Salut le Forum,

Lors de la présentation de mon problème, j'avais indiqué que mon code met en place un bouton sur une feuille créée à un certain moment donné (ou plus exactement importée depuis un autre fichier).

Je ne peux donc pas placer de code dans le module de cette feuille.

N'est-il pas possible de simplement remplacer la ligne qui met en place ce bouton ?

ActiveSheet.Buttons.Add(300, 0, 300, 80).Select

A te relire.

Re,

Alors là, je ne sais pas, désolé... mes connaissances se limitent au fur et à mesure que tu poses les questions...

Essaies peut être de placer dans ce cas là, le code dans un module de classe... On ne sait jamais...

Sinon, je ne sais pas....

A te lire,

Souri84

Souri84,

Merci infiniment quand même pour ton aide. C'était super sympa de ta part.

Et excuse-moi pour tous ces "s" en trop !

Meilleures salutations.

Salut le forum

yvouille a écrit :

N'est-il pas possible de simplement remplacer la ligne qui met en place ce bouton ?

ActiveSheet.Buttons.Add(300, 0, 300, 80).Select

oui en utilisant la position de la cellule.

ActiveSheet.Buttons.Add(Range("B100").Left, Range("B100").Top, 300, 80).Select

Mytå

Mytå,

Merci infiniment pour ta réponse.

Sur la base de tes informations, j'ai essayé de modifier un peu ton code afin que ce bouton vienne se placer en fin de liste (de grandeur variable), selon le code ci-dessous.

Sub Mise_en_place_bouton()

    Dim LigFin As Long, ShtR As Worksheet
    Set ShtR = Sheets("RepListeQuellensteuer")
    LigFin = ShtR.Range("G" & Rows.Count).End(xlUp).Row

    Sheets("RepListeQuellensteuer").Select
    ActiveSheet.Buttons.Add(20, Rows(LigFin).Top, 300, 80).Select 

Ca fonctionne bien, si ce n'est que le bouton vient se placer exactement sur la dernière ligne et masque celle-ci. Sais-tu comment modifier ce code afin que le bouton vienne se placer par exemple 3 lignes en dessous ? J'ai essayé avec "Offset", mais je n'y suis pas arrivé.

Meilleures salutations.

Salut le forum

Yvouille ajoute 3 à ta dernière ligne.

ActiveSheet.Buttons.Add(20, Rows(LigFin+3).Top, 300, 80).Select

Mytå

Mytå,

Du point de vue mathématique, c'est tout con : Quelque chose + 3 = 3 de plus.

Du point de vue VBA, c'est génial ! Ca correspond exactement à ce que je désirais et que je cherchais depuis plusieurs jours.

Est-ce que je peux abuser ? Pourquoi est-ce que le code placé juste après la mise en place de ce bouton ne fait pas que le curseur se place sur la dernière ligne et que celle-ci soit visible à l'écran à la place du haut de la page ??

Range("H11").End(xlDown).Offset(0, 2).Select

Merci encore pour ton aide et bonne journée à toi (bonne soirée aux autres).

Re le forum

Tu dois avoir des lignes vides sur ta colonne "H" , le code selectionne la dernière ligne

non-vide de ta colonne.

Essaye en partant plutôt du bas de la colonne

Range("H65535").End(xlUp).Offset(0, 2).Select

En espérant avoir bien compris ta question.

Mytå

Bonjour Mytå, Bonjour le Forum,

Avec cette solution, la dernière ligne est bien sélectionnée - tout comme avec ma solution, car il n'y a pas de ligne vide en dessous de la cellule H11 - mais c'est toujours le haut de la page qui apparaît à l'écran quand la macro est terminée.

Comme il faut alors chercher manuellement la dernière ligne, c'est un peu embêtant car mes listes comportent 4 à 500 entrées.

Je suis alors toujours preneur pour une solution.

Bonnes salutations.

Bonsoir,

J'essaie de changer le titre de mon fil en espérant quand même trouver une solution avec votre aide.

Comme indiqué dans mes précédents messages, je cherche un code qui permettrait qu'une procédure se termine en laissant apparaître à l'écran la dernière ligne de la feuille, à la place du haut de la page.

A vous relire.

Bonsoir,

essaye cette ligne en remplacant A5 par ta cellule

  Application.Goto Reference:=Range("A5"), Scroll:=True

amicalement

Claude.

Rechercher des sujets similaires à "mise place bouton intermediaire code vba"