Insérer du texte en cliquant sur un bouton

titom102

XLDnaute Nouveau
Bonjour à tous,
Avant toute chose, excellente année à vous!
Pour cette nouvelle année, j'aimerais insérer le texte "Oui" dans une cellule en cliquant sur un bouton (bouton valider à la suite d'un questionnaire) et le texte "Non" lors d'un second clic et par défaut.
Par ailleurs, s'il est possible de changer le texte "Valider" sur le bouton lorsque l'on a cliqué une première fois dessus par "Ne pas Valider", je suis preneur également.

Je vous joins une feuille pour eclaircir un peu mes propos.

Merci d'avance
Titom 102
 

Pièces jointes

  • InsText.xls
    20 KB · Affichages: 55
  • InsText.xls
    20 KB · Affichages: 59
  • InsText.xls
    20 KB · Affichages: 55
G

Guest

Guest
Re : Insérer du texte en cliquant sur un bouton

Bonjour,

Code:
Sub Bouton1_QuandClic()
'Limiter à la colonne A
With Cells(ActiveCell.Row, 1)
    .Value = Array("Non", "Oui")((.Value <> "Oui") * -1)
    ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text = Array("Valider", "Ne pas valider")((.Value = "Oui") * -1)
End With
End Sub

Mieux: avec un bouton contrôle ActiveX nommé "cmdValidation" et le code ci-dessous dans le module de la feuille
Code:
Private Sub cmdValidation_Click()
    With Cells(ActiveCell.Row, 1)
        .Value = Array("Non", "Oui")((.Value <> "Oui") * -1)
        cmdValidation.Caption = Array("Valider", "Ne pas valider")((.Value = "Oui") * -1)
    End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 cmdValidation.Caption = Array("Valider", "Ne pas valider")((Cells(Target.Row, 1).Value = "Oui") * -1)
End Sub

A+
 
Dernière modification par un modérateur:

titom102

XLDnaute Nouveau
Re : Insérer du texte en cliquant sur un bouton

Je te remercie hasco pour ton aide. J'aimerais cependant indiquer la cellule de destination du texte (qui se trouve dans un aute onglet), je ne connais pas grand chose en Vba...
Un message d'erreur apparait également "incompatibilité de type".
Merci d'avance.
 
G

Guest

Guest
Re : Insérer du texte en cliquant sur un bouton

Re,

je ne connais pas grand chose en Vba...
C'était à préciser dans le premier post

J'aimerais cependant indiquer la cellule de destination du texte (qui se trouve dans un aute onglet),
Idem,

Et ton fichier ne le montre pas.

n message d'erreur apparait également "incompatibilité de type".
Cela ne me dit rien de ce que tu as fais avec le code.

Un fichier avec des explications plus claires serait necessaire.

A+
 
Dernière modification par un modérateur:

titom102

XLDnaute Nouveau
Re : Insérer du texte en cliquant sur un bouton

Excuse moi de ne pas avoir été assez clair. J'ai réussi à gérer la désignation de la cellule cependant il me renvoie toujours un message d'erreur "Incompatibilité de type"

J'ai collé le code dans le module 1 comme ceci:
Sub Bouton1_QuandClic()


With Worksheets("Feuil1").Cells(6, 1) 'J'ai ajouté la désignation de la cellule
.Value = Array("Non", "Oui")((.Value <> "Oui") * -1)
ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text = Array("Valider", "Ne pas valider")((.Value = "Oui") * -1)
End With


End Sub

L'erreur semble liée à l'erreur 2023:Application.Caller.

J'espère avoir été assez complet.
Merci encore.
 

Pièces jointes

  • InsText.xls
    24.5 KB · Affichages: 49
  • InsText.xls
    24.5 KB · Affichages: 48
  • InsText.xls
    24.5 KB · Affichages: 55
G

Guest

Guest
Re : Insérer du texte en cliquant sur un bouton

Re,

Chez moi ton dernier fichier fonctionne correctement.
Alors sélectionne ton bouton et regarde comment il se nomme dans la zone des noms à gauche de la zone d'édition des formule. (bouton 1 sur l'image)


Ce lien n'existe plus


Et dans la macro mets ce nom entre guillemets à la place de Application.Caller

Code:
 ActiveSheet.Shapes("Bouton 1").TextFrame.Characters.Text......

A+
 

titom102

XLDnaute Nouveau
Re : Insérer du texte en cliquant sur un bouton

Bonjour,
Afin d'aller un peu plus loin avec ce bouton, je souhaite dans un premier temps protéger une plage de données lorsque l'on clique sur le bouton et ôter la protection lorsque l'on reclic.
Voici le code que j'ai entré:
With Worksheets("Feuil2").Cells(6, 1)
.Value = Array("Non", "Oui")((.Value <> "Oui") * -1)
ActiveSheet.Shapes("Bouton 1").TextFrame.Characters.Text = Array("Valider", "Ne pas valider")((.Value = "Oui") * -1)

Range("D10:F16").Select
Range("C16").Activate
ActiveSheet.Protect DrawingObjects:=Array("False", "True")((.Value = "Oui") * -1), Contents:=Array("False", "True")((.Value = "Oui") * -1), Scenarios:=Array("False", "True")((.Value = "Oui") * -1)
End With

Cependant une erreur apparait "impossible de définir la propriété text de la classe characters". Je suppose que mon code n'est pas bon...
merci d'avance
 

Pièces jointes

  • InsText.xls
    27 KB · Affichages: 36
  • InsText.xls
    27 KB · Affichages: 46
  • InsText.xls
    27 KB · Affichages: 45
G

Guest

Guest
Re : Insérer du texte en cliquant sur un bouton

Bonjour,

C'est normal lorsque ta feuille est protégée. DrawingObjects:=True protège le bouton de toute modification.

(.value="Oui") renvoie Vrai ou Faux ce n'est donc pas la peine de mettre
Code:
Array("False", "True")((.Value = "Oui") * -1)
dans le code de protection.

Déclare une variable booléenne
Code:
Dim Cond as boolean
....
......
Cond=.value="Oui"
ActiveSheet.Protect DrawingObjects:=Cond, Contents:=Cond,Scenarios:=Cond, UserInterfaceOnly:=True

visiblement tu ne comprends pas ce que tu fais. Recherche un bon tutoriel ou bouquin pour apprendre les bases.
A+
 

Si...

XLDnaute Barbatruc
Re : Insérer du texte en cliquant sur un bouton

Salut,

Si... tu débutes, essaie cette version plus basique mais avec un contrôle* ActiveX (CommandButton) comme te l'a conseillé Hasco :
Code:
'Ne pas effacer ni déplacer cette première ligne qui permet de garder la dernière valeur de la variable Un
Dim Un As Boolean			                           'variable qui prend la valeur  True(Vrai ) ou False(faux) 
Private Sub CommandButton1_Click()                      'la première fois, Un est à False
  Activesheet.Unprotect		                             'déprotège la feuille
  Un = Not Un				                             'bascule de Faux à Vrai ou  inversement
  Range("A6") = IIf(Un, "Oui", "Non")	                         'la cellule bascule  en fonction de Un**
  CommandButton1.Caption = IIf(Un, "Valider", "Ne pas valider") 'le texte du bouton bascule en fonction de Un**
  Activesheet.Protect			                                 'reprotège la feuille
End Sub

*quand tu l'as créé, clic droit puis Visualiser le code (n'oublie pas de modifier le texte)
** permute les 2 options pour ajuster le cas : fonctionne comme Si(condition;action1;action2)
 

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh