Textbox.value à l'initialisation de l'USF

  • Initiateur de la discussion Initiateur de la discussion JCA06
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JCA06

XLDnaute Occasionnel
Bonjour le Forum,

Je n'ai pas trouvé la solution à mon problème.
Voici le principe :
- je dois alimenter une base de données en passant par une trame qui reprend les valeurs de la période précédente ;
- je récupére des sources de format différents
- je crée donc une procédure par type de source qui récupére les données, dont une variable 'nom1'
- et je dois d'abord chercher dans quelle colonne placer les données en cherchant 'nom1' dans la ligne 5 de ma trame.

Ma variable 'nom1' est déclarée comme publique, mais je n'arrive pas à la reprendre dans la textbox1 de mon USF, appelé au début de chaque procédure, qui doit servir à contrôler la colonne à alimenter.

Je pensais que le code suivant devait suffir :

Private Sub rechCol_Initialize()

TextBox1.Value = nom1

Mais ma textbox est toujours vide !

Merci de bien vouloir m'apporter votre aide !
 
Bonjour Jean Charles, le Forum

Alors déjà au taff, pas d'ambiance café aujourd'hui ??? 😉

Et bien ton souci semble très simple, ta Variable Nom1 n'est pas encore initialisée lors du lancement du UserForm.

En fait moi j'utilise plein de MsgBox quand je développe en stade des tests de Variables Publiques... Tu devrais placer des MsgBox à différents niveaux de procédures... Par Exemple :

Par exemple :

MsgBox 'Valeur de Nom1 Après Telle Ligne de Code (Définir) :' & Nom1

La vacherie classique est d'avoir une Double Déclaration de Variable une en tant que Public en Top de Module Standard

Public Nom1 As String


Et une seconde insidueuse qui est un résidu avant que l'on décide d'en faire une Variable Public, qui se trouverait dans une Sub

Dim Nom1 As String

Il est clair que dans ce cas là, ta variable est réinitialisée à 'Vide'...

(Un CTRL + F et une recherche dans tout le Projet peut t'aider à dépister ce genre de Bug non signalé par VBE)

Voilà pour l'instant mes idées... Bon Après Midi à Toi et au Forum
@+Thierry
 
Bonjour JCA, bonjour le forum,

Ta variable peut être déclarée publique, il te faut d'une part la définir puis tenir compte de sa durée de vie. Plutôt que de l'utiliser à l'initialisation de l'UserForm, pourquoi ne pas l'attribuer au Textbox1 dès qu'elle est définie dans une procédure. Il te suffit alors de rajouter :

UserForm1.TextBox1.Value=nom1
J'espère que je suis assez clair...

Édition :
Bonjour le fil, le forum,

Aïe ! M... ! l'extraBarbaTerrestre était déjà passé. Pas vu, désolé. Bien le bonjour à Moncao.


Message édité par: Robert, à: 03/05/2005 14:35
 
Bonjour Thierry, et bonjour Robert,

Ta proposition Robert, règle probablement le problème expliqué par Thierry parce que ça marche !!

J'ai bien vu le problème de durée de vie, et j'ai essayé d'ajouter static à public, mais ça ne passait pas..
Il faut peut-être le faire en deux lignes ?

Voic l'extrait de mon code :

Dim source As Workbook
Dim trame As Workbook

Set source = Workbooks(Workbooks.Count)
Set trame = Workbooks(Workbooks.Count - 1)
source.Activate
Set nom1 = Range('nom1')

Load rechCol
rechCol.Show ' j'ai mis les deux, ne sachant pas si le problème pouvait venir d'ici !!

et du coté de l'USF :

Private Sub rechCol_Initialize(nomfcp)
Dim propositions() As String
TextBox1.Value = nom1

Alors, c'était quoi le problème qui m'a rappelé que si j'ai l'impression d'être intelligent en comprenant en général vos codes, je peux être vite bloqué quand c'est moi qui pilote ??

Merci en tout cas pour votre aide !
 
Re Bonjour Jean Charles, Bonjour Robert-Karma-Killer, le Forum

Huum Huum, en fait si tu arrives à obtenir un résulat avec une ligne de Codes comme ceci en dehors (avant, je suppose) de l'initialisation du UserForm:

UserForm1.TextBox1.Value=nom1

Et que lors de l'initialisation du UserForm lui-même, ta TextBox1 reste vide...

C'est que celà confirme bien ma théorie tendant à penser qu'entre les deux actions ta variable 'Nom1' passe à la trappe... As-tu bien vérifié la possibilité de doublon de déclaration ?

Ensuite, étant donné que ta Variable est une Variable Object Range, elle retournera ce qui se trouve dans la cellule nommée 'Nom1' du WorkBooks(Workbooks.Count) à chaque fois que tu y feras appel par conséquent, au moment où tu initialiseras ta TextBox1, donc attention si tu fais du ménage sur les cellules entre temps, la valeur peut changer est devenir vide...

Si tu n'as pas d'avantage précis à avoir un Object Range, récupères plutôt une Variable de type String, qui elle, retiendra une fois pour toute ce qu'avait comme valeur ta Range('Nom1') au moment de l'initialisation de cette Variable String.

Bon Après Midi
@+Thierry

PS : Comme j'ai été amené à circuler en avion la semaine dernière, je profite de ce Post pour vous informer des nouvelles mesures de sécurité en ce qui concerne la fouille des passagers et passagères ...

Ce lien n'existe plus

Message édité par: _Thierry, à: 03/05/2005 15:14
 
Re bonjour à vous,

J'ai bien noté et j'ai donc récupéré le contenu de mon range.

Par contre, je n'ai pas trouvé l'explication...

D'après l'enchaînement de mon code dont j'ai reproduit l'extrait, il n'y avait rien entre la récupération de ma variable et l'appel de l'USF !

Avant d'appeler l'USF à partir du code directement, j'étais d'ailleurs passé au départ par une sous-procédure qui appelait l'USF, et j'avais utilisé ta technique de MSG pour vérifier que la variable suivait.

J'espère comprendre un jour, mais pour le moment, j'essaie d'avancer.
L'étape 2 consiste à rechercher la valeur de ma textbox1 dans la ligne 5 de ma trame et de récupérer la valeur de la cellule et son numéro de colonne.

J'essaie d'alimenter un tableau propositions() mais j'ai des soucis...

Voici l'extrait de code :
ReDim Preserve propositions(1, i)
propositions(0, i) = C.Value
propositions(1, i) = C.Column
i = i + 1
Set C = .FindNext(C)

Je lis un message '<L'indice n'appartient pas à la sélection>' quand je pointe sur 'proposition(1, i)'

J'ai beau essayer d'utiliser du code que Thierry avait utiliser dans un superbe USF de recherche en rouge et blanc, mais bon...
Je sais qu'il avait utilisé deux tableaux, je pense pour transposer les lignes et les colonnes.
Dites-moi si c'est un problème classique pendant que je cherche !

Au fait Thierry, tu as oublié de préciser le nom de la compagnie aérienne ! Mais je suis presque prêt à parier que c'est de l'intox !
Avec les consignes de sécurité applicables, ça m'étonnerait qu'ils laissent monter une pareille bombe à bord ! De plus, compte tenu de la taille de ses obus et du fait qu'elle tente de dissimuler, tant bien que mal, un petit barbu qui est peut-être membre d'Al Qua&iuml;da...

A plus
 
Re bonjour JCA, Robert, le Forum

Hihihi, c'est 'Aer Lingus' (si si c'est pas une blague, c'est vraiment avec ça que j'ai voyagé à Dublin) oui tout à fait dacodac avec toi pour la bombe !!! Quoiqu'on est si serré parfois que ce doit être palpittant de voyager en avion avec de tels airbags en protection rapprochée !

Bon pour ton code et ton message d'erreur c'est bien simple :

ReDim Preserve propositions(1, i)
propositions(0, i) = C.Value
propositions(1, i) = C.Column
i = i + 1

Tu as deux Colonnes, donc tu vas faire un ReDim Preserve Proposition(2, i)
et oui je sais c'est a s'arracher les cheveux parfois, mais avec ce genre de tableau inversé, on est en base zéro pour l'incrémentation séquentielle, mais pas pour le dimensionnement...

Voilà je pense que c'est simplement ceci ton problème.

Bonne Fin d'Aprèm
@+Thierry
 
J'avance un peu !!

Grâce à la fenêtre 'Variables locales', je vois que ma variable propositions est bien alimentée.
Il faut maintenant que je la vide dans ma listbox1.
Je vais ressortir la baterie des USF Listbox Rudiments !

Merci pour ton aide, et à bientôt !!
 
Bonsoir le fil, le forum,

Désolé JCA rien de nouveau pour toi mais juste une précision au niveau de la compagnie aérienne dont parle Thierry la 'Aer Lingus'. Elle a été rachetée par le le richissime Mc Cunny et sera bientôt rebaptisée 'Aer Cunny Lingus'. Les mauvaises langues disent que les Irlandais sont furax car il paraît que les moustaches ne seront plus autorisées à bord d'elle mais par contre, les consignes de sécurité seront plus souples, avec plus de doigté...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
466
W
Retour