Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Test sur variable pour Userform

GillesC

XLDnaute Occasionnel
Bonjour le forum

Mon problème :
Je veux récupérer une valeur pouvant se trouver dans 5 colonnes.
Pour cela je les stocke au moyen de :
Theme_Sec1 = ActiveCell.Offset(0, 31)
Theme_Sec2 = ActiveCell.Offset(0, 32)
etc.

Et s'il y a des valeurs, je veux qu'elles alimentent mon Userform
Donc je fais :
For i = 1 To 5
If .Controls("Theme_Sec" & CStr(i)) <> "" Then
Seulement voilà, ça ne marche pas, il plante sur le .Controls et ne trouve pas ma valeur.
Je suppose que le .Controls ne fonctionne que pour une valeur contenue dans le userform, alors ma question :
Quelle syntaxe utiliser pour tester des variables hors USF
Merci d'avance et bonne journée
 

mutzik

XLDnaute Barbatruc
Re : Test sur variable pour Userform

bonjour à tous,

en plus de la remarque judicieuse de Skoobi, je rajouterai que tu n'as pas besoin de convertir ta variable de boucle i en cstr(i)
Me.Controls("Theme_Sec" & i) devrait fonctionner très bien
 

GillesC

XLDnaute Occasionnel
Re : Test sur variable pour Userform

Bonjour,

Si tu écris ".Controls", il faut une structure With... End With:

With Userform1
If .Controls(....
.........
........
End With

Est-ce le cas?
Bonjour Skoobi
Oui mon usf se nomme Tableau_Saisie, et j'ai bien un "With Tableau_Saisie"
D'ailleurs auparavant ce programme fonctionnait très bien quand je stockais ces variables dans une Textbox de mon Usf.
Mais je l'ai modifié et je ne rapatrie plus ces données, je veux juste faire un test sur les valeurs de mon tableau et non sur celles stockées dans un Textbox.
Voilà
 

GillesC

XLDnaute Occasionnel
Re : Test sur variable pour Userform

bonjour à tous,

en plus de la remarque judicieuse de Skoobi, je rajouterai que tu n'as pas besoin de convertir ta variable de boucle i en cstr(i)
Me.Controls("Theme_Sec" & i) devrait fonctionner très bien


Bonjour Mutzik,
merci de ta réponse,
mais Me.Controls("Theme_Sec" & i) ne marche pas non plus.
Tant que je stockais mes variables dans des textbox (nommées F_Theme_Sec (i) ) il n'y avait pas de problème, mais maintenant que je les cherche directement dans mon tableau le ".Controls" plante, cela me met : "Objet spécifié introuvable"
 

jp14

XLDnaute Barbatruc
Re : Test sur variable pour Userform

Bonjour

Quels sont les contrôles de l'USF nommé "Theme_Sec" & i ?

Pour tester des variables hors USF il faut que les variables soient des variables publiques. dans ce cas il ne faut pas les considérer comme des contrôles.
Il faut modifier
If .Controls("Theme_Sec" & CStr(i)) <> "" Then
par If Theme_Sec(i) <> "" Then
avec pour Theme_Sec(i) une déclaration de ce type
Public Theme_Sec(10) as string
et
Theme_Sec(1) = ActiveCell.Offset(0, 31)

JP
 
Dernière édition:

GillesC

XLDnaute Occasionnel
Re : Test sur variable pour Userform

Re
Une version expurgée de mon fichier en annexe.
J'ai mis quelques annotations de mon problème dans Module1

Merci en tout cas de votre aide
 

Pièces jointes

  • GillesC.zip
    45.4 KB · Affichages: 27

jp14

XLDnaute Barbatruc
Re : Test sur variable pour Userform

Bonjour

Pour renseigner les différents contrôles il faut que l'USF soit ouvert.
Il faut modifier la séquence d'appel des procédures.
Remplacer : Call Saisie_Visites_2007 par
Tableau_Saisie.Show
supprimer .show dans Saisie_Visites_2007
et rajouter la procédure
Private Sub UserForm_Initialize()
Call Saisie_Visites_2007
End Sub


JP
 

GillesC

XLDnaute Occasionnel
Re : Test sur variable pour Userform

Re bonjour,
Merci à tous de vos aides, même si je n'ai pas réussi à solutionner mon problème.
J'ai contourné le souci en insérant des Textbox dans mon Userform et en les alimentant avec mes variables. J'ai réduit ces textbox pour qu'ils n'apparaissent pas et, si ce n'est pas très satisfaisant intellectuellement, au moins CA MARCHE!
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
2
Affichages
343
Réponses
22
Affichages
875
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…