Userform- Excel
Marie
-
leplot Messages postés 191 Date d'inscription Statut Membre Dernière intervention -
leplot Messages postés 191 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila j'ai un fichier Excel qui est remplis par plusieurs employés, et j'ai fait via VBA un userform avec le prénom des différents employé, et lorsqu'un employé clic sur son nom ça l'emmene sur le fichier Excel à un endroit particulier par exemple ligne 50, mais enfin de compte j'aimerais que lorsque l'employé clic sur son nom ça l'emmene à la dernière ligne qu'il a remplis (sachant que les employés inscrivent leurs noms sur le fichier à chaque ligne qu'ils remplissent).
Je sais pas si c'est bien clair,
Merci d'avance
Voila j'ai un fichier Excel qui est remplis par plusieurs employés, et j'ai fait via VBA un userform avec le prénom des différents employé, et lorsqu'un employé clic sur son nom ça l'emmene sur le fichier Excel à un endroit particulier par exemple ligne 50, mais enfin de compte j'aimerais que lorsque l'employé clic sur son nom ça l'emmene à la dernière ligne qu'il a remplis (sachant que les employés inscrivent leurs noms sur le fichier à chaque ligne qu'ils remplissent).
Je sais pas si c'est bien clair,
Merci d'avance
A voir également:
- Userform- Excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
14 réponses
Oui, mais pas la dernière ligne rempli du fichier, mais la dernière ligne qu'a rempli l'employé concerné:
Car les employés n'écrivent pas leurs données les uns à la suite, en effet c'est par bloc
Par exemple au début j'avais fait ligne 1: exploitant jean
ligne 1500: exploitant pierre
ligne 3000: exploitant paul
Donc quand pierre clic sur son nom ça l'emmene à la ligne 1500, mais la j'aimerais que ça l'emmène à la dernière ligne qu'il a remplis.
Je sais j'ai un peu du mal à m'expliquer, désolé!!
Merci
Car les employés n'écrivent pas leurs données les uns à la suite, en effet c'est par bloc
Par exemple au début j'avais fait ligne 1: exploitant jean
ligne 1500: exploitant pierre
ligne 3000: exploitant paul
Donc quand pierre clic sur son nom ça l'emmene à la ligne 1500, mais la j'aimerais que ça l'emmène à la dernière ligne qu'il a remplis.
Je sais j'ai un peu du mal à m'expliquer, désolé!!
Merci
Bonjour,
pour rester sur l'idée de qmike :
Range("A2999").End(xlUp).Select
Il faut pointer sur la dernière ligne du bloc de l'exploitant (ici 2999 s'il a de 1500 à 2999).
En récupérant cette valeur en variable, cela donne
FinduBloc = 2999 (en fonction de l'exploitant)
Range("A" & FinduBoc).End(xlUp).Select
J'ai pas testé mais je pense que cela fonctionne.
pour rester sur l'idée de qmike :
Range("A2999").End(xlUp).Select
Il faut pointer sur la dernière ligne du bloc de l'exploitant (ici 2999 s'il a de 1500 à 2999).
En récupérant cette valeur en variable, cela donne
FinduBloc = 2999 (en fonction de l'exploitant)
Range("A" & FinduBoc).End(xlUp).Select
J'ai pas testé mais je pense que cela fonctionne.
Oui mais je ne sais pas combien de ligne il y aura exactement par exploitant (enfin combien un exploitant remplira de ligne), car il peut en rajouter....
Mon nombre de ligne est un ordre de grandeur....
Mon nombre de ligne est un ordre de grandeur....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
RE,
comment définis-tu le début d'un bloc ?
Si tu dis que Y commence à 3000 cela veut dire que X fini à 2999.
Donc si tu définis pour chaque exploitant un début (1500) et une fin (2999), tu peux utiliser la formule.
Si les blocs ne sont pas définis en longueur, je ne vois pas comment tu peux définir le bloc suivant.
comment définis-tu le début d'un bloc ?
Si tu dis que Y commence à 3000 cela veut dire que X fini à 2999.
Donc si tu définis pour chaque exploitant un début (1500) et une fin (2999), tu peux utiliser la formule.
W 1 1499 X 1500 2999 Y 3000 4499 Z 4500 5999 ...
Si les blocs ne sont pas définis en longueur, je ne vois pas comment tu peux définir le bloc suivant.
Je fais en gros car je ne sais pas combien de lignes ils vont rentrer chacun, donc c'est pour ça que j'aimerais que lorsqu'il clic sur leur nom ça les emmène à leur dernières lignes, mais je ne peux pas faire une fonction avec leur prénom? vu qu'ils inscrivent leurs prénom à chaque fois
Non parce qu'à partir de ce fichier je calcul le taux de service des différents transporteurs et il me faut l'ensemble des données... mais es possible ce que je veux faire??
SSalut,
je reviens sur ton problème avec une solution Excel
{=MAX(SI(Liste=C1;LIGNE(Liste)))} (formule matricielle à valider avec MAJ+CTRL+ENTREE)
avec :
"Liste" la liste contenant les prénoms (par exemple $A$1:$A$65356)
C1 : la cellule contenant le prénom cherché.
Tu mets cette formule dans un coin de ta feuille ou dans une feuille séparée et tu fais référence à cette cellule dans ton code.
Pour chercher directement dans ton code, je vais voir pour faire une boucle et je reviens.
je reviens sur ton problème avec une solution Excel
{=MAX(SI(Liste=C1;LIGNE(Liste)))} (formule matricielle à valider avec MAJ+CTRL+ENTREE)
avec :
"Liste" la liste contenant les prénoms (par exemple $A$1:$A$65356)
C1 : la cellule contenant le prénom cherché.
Tu mets cette formule dans un coin de ta feuille ou dans une feuille séparée et tu fais référence à cette cellule dans ton code.
Pour chercher directement dans ton code, je vais voir pour faire une boucle et je reviens.
Re,
Sub Test() Dim i, DernièreLigne, LigneCherchée Dim Prénom Prénom = "LePlot" 'si le prénom n'est pas trouvé la variable sera égale à "Absent" LigneCherchée = "Absent" 'recherche de la dernière ligne remplie pour accélérer la recherche DernièreLigne = Range("A65536").End(xlUp).Row ' test de toutes les lignes en remontant For i = DernièreLigne To 1 Step -1 If Range("A" & i) = Prénom Then ' le prénom est trouvé, la variable est égale à la ligne LigneCherchée = i Exit For End If Next i End Sub
Salut,
Merci pour ta réponse, mais je ne comprends pas tout.... En effet, je ne comprends pas ou je dois mettre la deuxième programmation que tu m'as écrites (je la mets à part ou dans la programmation de mon bouton???....) désolé je ne suis pas très douée..... :-(
Merci pour ta réponse, mais je ne comprends pas tout.... En effet, je ne comprends pas ou je dois mettre la deuxième programmation que tu m'as écrites (je la mets à part ou dans la programmation de mon bouton???....) désolé je ne suis pas très douée..... :-(
Salut,
Il faut intégrer le code dans ton bouton. Il sert à définir la dernière ligne de l'employé.
Il faut donc écrire en DernièreLigne +1
Il faut adapter le code avec les bonnes variables par rapport à ton code (changer la variable "prénom" par exemple)
Il faut intégrer le code dans ton bouton. Il sert à définir la dernière ligne de l'employé.
Il faut donc écrire en DernièreLigne +1
Il faut adapter le code avec les bonnes variables par rapport à ton code (changer la variable "prénom" par exemple)