XL 2013 initialisation TEXTBOX à l'ouverture du classeur

MM3133

XLDnaute Nouveau
Bonjour le Forum,

J'aurais besoin de votre aide
J'ai pourtant essayé toutes les solutions trouvées sur le sujet mais rien ne fonctionne je ne comprends plus pourquoi
Je souhaite réinitialiser les Textbox de mon Classeur à la fermeture mais cela ne fonctionne vraiment pas

voici le code qui me semblait adéquate :

Code:
Sub untextbox()
 Dim txt As OLEObject
 
 For Each txt In ActiveSheet.OLEObjects
 If TypeOf txt.Object Is MSForms.TextBox Then
 txt.Object.Value = ""
 End If
 
 Next txt
 
End Sub
Sub RAZ_Textbox()
Application.ScreenUpdating = False
LockWindowUpdate FindWindowA("XLMAIN", Application.Caption)


groupe = Array("A", "B", "C", "D")

Dim Ws As Worksheet

For Each Ws In Sheets(groupe)

Sheets(Ws.Name).Select

Call untextbox

Next Ws

Application.ScreenUpdating = True
LockWindowUpdate 0

End Sub


J'ensuite appelé RAZ_Textbox dans this workbook ...

Quelqu'un pourrait m'aiguiller s'il vous plait ?

Merci d'avance!!
++
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : initialisation TEXTBOX à l'ouverture du classeur

Bonjour MM3133,

....... Je souhaite réinitialiser les Textbox de mon Classeur à la fermeture mais ..........

...........et dans le titre,
[h=2]initialisation TEXTBOX à l'ouverture du classeur[/h]

Le fait de joindre le fichier à la question posée pourrais certainement nous aider à comprendre le problème et y apporter la solution la plus adaptée

à+
Philippe
 

MM3133

XLDnaute Nouveau
Re : initialisation TEXTBOX à l'ouverture du classeur

Bonjour Philippe,

Je viens de réussir pourtant je n'ai absolument rien changé au code, (c'est assez étrange que ça marche finalement après toutes ses tentatives ... je croise les doigts pour la suite !!)

Par contre j'aurais une autre petite question ? Est-il possible d'afficher la sélection choisie par l'utilisateur dans une zone de texte ou dans une cellule les unes à la suite des autres ?

EXEMPLE :
j'ai 20 checkbox avec 20 possibilités (checkbox1=A, checkbox2=B,....) et je souhaiterais afficher le choix de l'utilisateur comme ceci : A,C,D,E,J... )
auriez - vous une idée ?

Le classeur est malheureusement confidentiel car je suis en stage, je ne peux donc pas le joindre :/

Merci beaucoup d'avoir pris le temps de répondre en tous cas !!

A+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : initialisation TEXTBOX à l'ouverture du classeur

Re, Bonjour

EXEMPLE :
j'ai 20 checkbox avec 20 possibilités (checkbox1=A, checkbox2=B,....) et je souhaiterais afficher le choix de l'utilisateur comme ceci : A,C,D,E,J... )
auriez - vous une idée ?

voir fichier joint (pour 10 CheckBox)

à+
Philippe
 

Pièces jointes

  • 111.xlsm
    19.2 KB · Affichages: 28
  • 111.xlsm
    19.2 KB · Affichages: 39

MM3133

XLDnaute Nouveau
Re : initialisation TEXTBOX à l'ouverture du classeur

Re,

Sachant que je n'utilise pas de Userform j'ai créé une macro que j'ai appelée sur le feuille sur laquelle je souhaite que le résultat s'affiche mais cela ne veut pas fonctionner... Est-ce valable pour Excel 2013 aussi ?
voici ma macro :
Sub aff_polluants()
Application.ScreenUpdating = False

texte = ""
For i = 1 To 21
If Me("CheckBox_sol" & i & "P") Then texte = texte & Me("CheckBox_sol" & i & "P").Caption & ", "
Next i

Worksheets("Synthèse_cotations").[B149] = texte
End Sub

est-ce correcte?

Merci pour votre aide :)
 

Paf

XLDnaute Barbatruc
Re : initialisation TEXTBOX à l'ouverture du classeur

bonjour MM3133, phlaurent55,

S'il n'y a que 21 Checkbox, à tester:
Code:
Sub aff_polluants()
 Dim texte as string, CB
 Application.ScreenUpdating = False

 texte = ""
 For Each CB In ActiveSheet.OLEObjects
    If TypeOf CB.Object Is MSForms.CheckBox Then
        If CB.Object Then texte = texte & CB.Object.Caption & ", "
    End If
 Next CB

 Worksheets("Synthèse_cotations").[B149] = texte
 Application.ScreenUpdating = True
End Sub

S'il y avait plus de 21 CheckBox, il faudrait 'filtrer' par nom.

A+
 

MM3133

XLDnaute Nouveau
Re : initialisation TEXTBOX à l'ouverture du classeur

Bonsoir Paf,

Merci pour ton aide en effet ça marche mais ça comptabilise toutes les checkbox de ma feuille... Je pense qu'il faut filtrer par nom en effet: je souhaiterais que ça boucle uniquement sur les checkbox ayant le nom suivant : ("CheckBox_sol" & i & "P") pour i de 1 à 21...

Je suis en train de chercher mais pour le moment ça ne compile pas ...
Si jamais tu as une idée elle est la bienvenue!!

Merci encore

Bonne soirée à vous deux
 

Paf

XLDnaute Barbatruc
Re : initialisation TEXTBOX à l'ouverture du classeur

re,

Si l'ensemble des checkbox a la même structure de nom, je ne vois que ce type de moyen de déterminer si on est entre 1 et 21:
Code:
...
    If TypeOf CB.Object Is MSForms.CheckBox Then
         If Not IsNumeric(Mid(CB.Name, 13, 2)) Or Mid(CB.Name, 13, 2) <= 21 Then
               If CB.Object Then texte = texte & CB.Object.Caption & ", "
        End If
    End If
...


Ou bien 'filtrer' sur Caption si cette propriété s'y prête mieux ?

A+
 

MM3133

XLDnaute Nouveau
Re : initialisation TEXTBOX à l'ouverture du classeur

Bonjour Paf,

Je vais continuer à chercher car cela ne fonctionne pas ... ( j'ai deux checkbox qui se nomme CheckBox2_solpol et les 21 autres qui se nomme ("CheckBox_sol" & i & "P") . C'était censé me faciliter la tâche de les renommer mais apparemment non ^^

J'ai encore une autre question à propos de l'intitulé de ma discussion ... Ce matin mon code ne compile plus et m'indique une erreur: Quelqu'un saurait pourquoi par hasard ?
Sub untextbox()
Dim txt As OLEObject

For Each txt In ActiveSheet.OLEObjects
If TypeOf txt.Object Is MSForms.TextBox Then
txt.Object.Value = ""
End If

Next txt

End Sub
Sub RAZ_Textbox()
Application.ScreenUpdating = False
LockWindowUpdate FindWindowA("XLMAIN", Application.Caption)


groupe = Array("A", "B", "C", "D")

Dim Ws As Worksheet

For Each Ws In Sheets(groupe) 'LIGNE D'erreur '9' apparemment l'indice "sheets(groupe)" n'appartient pas à la selection ...

Sheets(Ws.Name).Select

Call untextbox

Next Ws

Application.ScreenUpdating = True
LockWindowUpdate 0

End Sub


Si quelqu'un peut m'aider je suis preneuse :)

Merci beaucoup
 
Dernière modification par un modérateur:

Paf

XLDnaute Barbatruc
Re : initialisation TEXTBOX à l'ouverture du classeur

Re,

Pour les Checkbox :
si deux ont un nom différent (CheckBox1_solpol et CheckBox2_solpol) des 21 autres , toutes n'ont pas la même structure, on peut donc 'filtrer' sur le nom :
Code:
...
    If TypeOf CB.Object Is MSForms.CheckBox Then
         If CB.Name Like "CheckBox_sol*" Then
               If CB.Object Then texte = texte & CB.Object.Caption & ", "
        End If
    End If
...

Pour la boucle sur les feuilles, essayer

Code:
For i = Lbound(groupe) to Ubound(groupe) 
    WorkSheets(groupe(i)).Select
    Call untextbox
Next i

(avec i déclaré as Byte )

on aurait pu passer le nom de la feuille en paramètre à la sub untextbox pour éviter les sélection des feuilles.

S'il y avait d'autres soucis, pensez à joindre un classeur avec des données non confidentielles

A+

edit : modif du nom de variable dans la boucle
 
Dernière édition:

MM3133

XLDnaute Nouveau
Re : initialisation TEXTBOX à l'ouverture du classeur

Bonjour Paf,

Merci pour ces conseils.

Pour le textbox j'ai toujours le même message d'erreur malheureusement au niveau de la ligne "WorkSheets(groupe(i)).Select"
Du coup j'ai essayé dans thisWorbook d'appeler untextbox
Call untextbox(Sheets("A"))
Call untextbox(Sheets("B"))
.
.
.

Mais il me met : nombre d'arguments incorrect ou affectation de propriété incorrecte...
Je ne comprends vraiment plus pourquoi ....

merci d'avance pour votre aide
 

Paf

XLDnaute Barbatruc
Re : initialisation TEXTBOX à l'ouverture du classeur

Re,

le classeur sans macro ne m'aide que peu, mais il m'a permis de voir qu'il n'y avait pas de feuille A, B, C, D. Ce qui peut expliquer l'erreur. Ce n'est sans doute pas la copie exacte du classeur réel.

Quand à
on aurait pu passer le nom de la feuille en paramètre à la sub untextbox pour éviter les sélection des feuilles.
c'était plus le principe qui était évoqué, il faut adapter la sub untextbox en conséquence pour que ça fonctionne.

Code:
Sub untextbox(Feuille as string)
 Dim txt As OLEObject
 For Each txt In worksheets(Feuille).OLEObjects
    If TypeOf txt.Object Is MSForms.TextBox Then  txt.Object.Value = ""
 Next txt
End Sub

avec appel par :

Code:
untextbox groupe(i)

Mais on aurait aussi bien pu ne faire qu'une sub en intégrant le code de la sub untextbox() dans la Sub RAZ_Textbox();

mais ce n'est pas ce qui débloquera l'erreur sur WorkSheets(groupe(i)).Select

A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz