Ordre de récupération des controls

Bonjour

j'ai fais un userform avec plusieurs textbox et combobox

Je veux récupérer les différentes valeurs de ces controls. ça marche mais l'ordre n'est pas respecté , la valeur de la textebox 3 ne vient pas après celle de la textbox2, etc.

Comment faire pour que 'ordre soit respecté ??

Autres problème : pourquoi ma variable "destination" ne fonctionne pas ??

Merci pour votre aide.

Alain

Bonjour,

l'ordre dans lequel les objets sont pris est l'ordre dans lequel ils ont été créés.

si tu veux les prendre dans un autre ordre, utilise leur nom.

pour que ta variable destination soit visible dans toutes les procédures et tous les modules, tu dois la définir dans un module autre qu'un userform ou un module de feuille.

Merci pour ta réponse.

ok pour l'ordre je vais regarder ça et sinon recréer le controls dans l'ordre que je veux.

Pour ce qui est de la variable elle est déclarée dans le module "variables" en "Public" et pourtant ça ne marche pas

Alain

bonjour,

ton module variables est un module "userform" (si je ne m'abuse)

ok pour l'ordre je vais regarder ça et sinon recréer le controls dans l'ordre que je veux.

pour l'ordre tu peux utiliser une boucle

for i=1 to 7 ' accéder les textbox dans l'ordre de leur numéro
cells(ligne,i)=me("textbox" & i)
next i

'accéder les objets dans l'ordre donné par une table
r=split("textbox1,listbox2,combobox3",",")
for i=lbound(r) to ubound(r)
cells(ligne,i+1)=me(r(i))
next i

Bonjour

Ce n'est pas de toute façon une méthode fiable d'utiliser l'ordre des contrôles.

Le mieux est de référencer chacun de tes champs et d'attribuer leur nom de référence aux contrôles du UserForm.

Pour l'exemple, j'ai référencé B5 en Marque, C5 en Modèle, D5 en Série et attribué ces noms aux contrôles correspondants.

Par ailleurs, je t'ai ajouté mon propre calendrier car celui que tu as récupéré m'a paru assez compliqué.

ci-joint ton fichier modifié pour exemple.

bonsoir,

tout d'abord merci à tous pour vos réponses.

Thev : j'ai essayer ton fichier, mais je ne comprends pas comment tu récupères les valeurs des controls . à quoi correspond la variable "feuil1" ??

Comme tu le verras j'ai mis des noms aux controls "utiles " de la 1ere frame, mais seulement deux sont copiés en feuille " Mouvements_actifs", pourquoi ?

merci de ton aide.

Alain

ps:je remets le fichier modifié

bonsoir,

tout d'abord merci à tous pour vos réponses.

Thev : j'ai essayer ton fichier, mais je ne comprends pas comment tu récupères les valeurs des controls . à quoi correspond la variable "feuil1" ??

Comme tu le verras j'ai mis des noms aux controls "utiles " de la 1ere frame, mais seulement deux sont copiés en feuille " Mouvements_actifs", pourquoi ?

merci de ton aide.

Alain

ps:je remets le fichier modifié

j'ai essayer ton fichier, mais je ne comprends pas comment tu récupères les valeurs des controls

Les noms des contrôles doivent correspondre aux noms donnés aux cellules contenant l'intitulé des colonnes de ta feuille "Mouvements actifs".

Exemple, si tu sélectionnes la cellule I5 apparait en haut à gauche son nom : date_prise_en_charge, son contenu étant : Date de prise en charge. Toutes les références de nom sont gérées dans le Gestionnaire de noms (voir bouton se trouvant dans le menu Formules)

J'ai procédé aux rectifications nécessaires pour faire correspondre les références de nom à ceux des contrôles.

à quoi correspond la variable "feuil1

feuil1 n'est pas une variable mais un objet au même titre que ThisWorkBook. Cet objet est la feuille qui a pour l'instant le nom : Mouvements_actifs (voir tous les objets feuille avec leur nom dans l'éditeur VBA).

Par ailleurs, j'ai modifié les événements relatifs aux contrôles de date. Il vaut mieux ne pas utiliser l'événement Enter car il est géré au niveau du cadre (frame3) pour les contrôles qui sont à l'intérieur et cela crée un événement intempestif.

Bonjour Thev

un GRAND

J'ai tout compris et il est vrai que la procédure est claire et simple, en plus l'ordre des controls n'a pas d'importance pour la copie !!

Génial !!

Merci et très bonne journée.

Alain

Bonjour,

Un peu de peaufinage.

Validation :

1- pour la recherche de la première ligne vide, remplacement de la cellule B5 par le nom lui faisant référence. Cela permet de prendre en compte toute insertion ou suppression de ligne. Si la cellule B5 devient B6 ou B4, le nom lui faisant référence sera automatiquement mis à jour. Même remarque pour toute insertion ou suppression de colonne.

C'est d'ailleurs le grand intérêt d'utiliser des références de nom. Bien plus facile à maintenir.

2- limitation du remplissage aux contrôles Combobox et TextBox. L'appel des contrôles Label provoque forcément une erreur car non associés à une référence de nom.

Appel du calendrier via double clic

Ajout de l'instruction cancel qui permet d'annuler l'effet du double clic sur le contrôle.

bonjour

encore mieux .

Avec ça j'ai de quoi faire ce dont j'ai besoin.

Merci Thev et bonne journée

Alain

Rechercher des sujets similaires à "ordre recuperation controls"