Indiquer la ligne active en variable

Bonsoir à tous,

Je viens vous demander de l'aide car je bloque sur deux choses dans l'élaboration de mon fichier.

La 1ère :

Mon projet consiste à l'élaboration d'une carte de fidélité informatisée : pour 10 achetés / 1 offert.

Le principe est donc de sélectionner le porteur dans la combobox12 puis de cliquer sur les labels

pour simuler le coup de tampon sur la carte de fidelité (CDF).

Pour le moment le code stipule d'écrire sur la ligne 3 correspondant au porteur n°1 : quand on clique sur la premiere

case de la CDF , un "x" se note en "F3", si on double-clique, le "x" disparait. La 2ème case correspond à G3...etc

Le but est donc d'écrire sur la ligne correspondante au porteur choisi dans la combobox au départ.

Je ne vois pas comment le coder?

La 2ème :

J'ai en cellule A3 la formule : =B3 & " ( " & D3 & " )"

La cellule contient un nom : "Porteur n°1"

La cellule contient une date : "01/01/2000"

Le résultat obtenu en A3 : "Porteur n°1 ( 36526 ) au lieu de : "Porteur n°1 ( 01/01/2000 ).

J'ai pensé que c'était le format de cellule qui coinçait mais je n'arrive pas à solutionner

En espérant avoir été à peu près clair...

Merci d'avance

Landry

20test1.xlsm (39.63 Ko)

Bonsoir,

Pour ta formule (question 2) :

=B3 & " ( " & TEXTE(D3;"jj/mm/aaaa") & " )"

Pour la question 1 j'ai vu "AM" et non "X" ? Que les champs d'infos restaient vides à la sélection d'un nom ?

Et je n'ai pas compris où était le problème ! Je vais regarder à nouveau, mais si tu pouvais préciser...

(Cela n'a pas l'air fini.)

Merci pour le 2ème problème résolu

Pour le reste :

Le fait de cliquer sur le label17 va mettre un "x" dans la cellule "F3" de la feuille "Piles".

Si la cellule "F3" comporte un "x" alors le label17.caption = "AM"

Le problème est que peut importe le porteur choisi, c'est toujours "F3" qui change (normal c'est ce qui est codé)

alors que pour le porteur n°2 il faudrait que ce soit "F4"... pour le n°3 : "F5"... etc

Et oui pour le moment les champs d'infos restent vide, c'est normal, il me servent simplement (pour le moment) à remplir

les colonnes à l'aide du bouton "+" situé à coté de la combobox12.

Mon problème n'est pas d'afficher dans le userform les données du tableau mais plutôt l'inverse : d'écrire sur une ligne sélectionnée

J'ai regardé de plus près entre temps ! J'ai commencé par être intrgué par une étiquette (Label27 pour être plus précis) recouvrant 12 autres contrôles... J'ai d"'abord cru à une facétie, mais non ! je n'ai toujours pas compris la raison. Il n'y en a peut-être pas !

Ton problème est assez trivial, ta ligne est fournie par le ListIndex de la Combo (+3 car tu montes une base en t'amusant à sauter des lignes...)

Cette indication est suffisante pour régler ton problème, mais je n'interviendrai pas sur ton code car tout me paraît à revoir (et globalement la conception ne me paraît pas bouclée...).

  • Mettre une liste de 65000 ligne dans une Combo, ce n'est pas ce que je donnerais en exemple.
  • Et user une ligne pour mettre le focus sur ladite Combo à l'ouverture (alors qu'elle l'a déjà d'une part et que d'autre part si ce n'était pas le cas, cela se définit avec l'ordre de tabulation), non plus.
  • Je n'aurai pas d''avis tranché sur l'usage qui est fait de nombreuses étiquettes, mais j'en aurai par contre un sur la nécessité de renommer ses contrôles dans une telle configuration.
  • Et le code n'est ni optimisé, ni sécurisé (au regard des opérations à réaliser), et bien sûr pas indenté. Et incomplet...

Je passe donc volontiers la main...

Cordialement.

Je te remercie en tout cas d'avoir pris le temps

de me lire et de me répondre

Je suis novice en vba, donc je fais avec...

Mais j'apprends petit á petit.

Tu viens de m'apprendre qu'il n'y avait pas besoin de demander le focus, merci

Pour les 65000 lignes, on peut certainement indiquer " jusqu'à la dernière ligne écrite". Mais comme je ne sais pas faire, je m'adapte. Je vais effectuer une recherche sur ce point.

Pour le label27 : Il ne sert qu'à afficher un cadre autour du reste.

Merci quand même

Et oui pour le moment les champs d'infos restent vide, c'est normal, il me servent simplement (pour le moment) à remplir

J'ai bien compris que ton formulaire te sert à saisir des éléments et qu'en fait la base ne sert dans ces conditions qu'à enregistrer (c'est d'ailleurs un peu toujours le cas, mais dans ton cas la seule zone de travail est le formulaire), ce qui ne justifie pas que les quelques infos enregistrées ne soient pas rappelées à l'appel d'un client...

A cet égard, le bouton de lancement placé dans ta base et qui va devenir gênant tout de suite, n'a rien à y faire, il doit être placé sur une autre feuille. Et même, si je trouve injustifié le plus souvent le lancement de Userform à l'ouverture d'un classeur, dans ton cas ce serait une solution logique dans la mesure où tu n'utilises pas autre chose...

J'ajouterais même que le classeur peut fort bien être minimisé, ou en tout cas que la base ne soit pas la feuille active.

S'agissant de la Base, on ne laisse jamais de ligne vide, cela fait partie des règles impératives si l'on veut un outil fonctionnel et fiable. D'autre part un champ calculé en 1re colonne n'est admissible que s'il s'agit d'un numéro d'ordre mis automatiquement (dans le but de constituer une clé primaire). Elle devrait donc se situer à droite des champs utilisés pour le calcul (elle ne te sert qu'à créer une colonne destinée à alimenter la liste de la Combo).

Utiliser un nom dynamique pour la Base faciliterait ensuite son utilisation, mais dans ton cas un Tableau Excel est particulièrement indiqué. Sa caractéristique principale est qu'il s'étend automatiquement avec les formules lorsqu'il y en a...

Si tu avais plusieurs dizaines de champs d'information et que tu ne veuilles pas les appeler tous à la sélection d'un client, je comprendrais mais avec 4 infos utiles à identification, il convient de le faire. Et cela te permet effectivement de les modifier ou ajouter si elles manquent...

L'insertion d'un nouveau n'est pas prévue, c'est une lacune importante...

Quant à la mise de "x" pour le suivi de la fidélité, tant qu'à utiliser 10 colonnes pour ça, autant y mettre une information qui pourrait s'avérer utile, la date par exemple.

Et la gestion peut en être simplifiée, même si tu tiens à imager sur le modèle de la carte qu'on tamponne...

Mais pour faire un outil fiable et facile d'utilisation, il faut le reprendre en profondeur, redéfinir la Base, reconceptualiser le formulaire en renommant ses contrôles de façon à faciliter leur utilisation dans le code, et recoder entièrement.

Cordialement.

Merci beaucoup pour tous ces conseils

Le fichier mis en exemple était un fichier test pour poser ma question sur le forum, dans mon projet final, l'utilisateur n'a pas accès à la feuille excel où sont inscrites les infos, il n'y a donc pas de bouton sur celle-ci.

J'ai finalement réussi, certainement pas de la meilleur façon , mais cela fonctionne sans soucis et en "toute sécurité".

Merci encore pour ton implication.

Cordialement

Rechercher des sujets similaires à "indiquer ligne active variable"