Userform- Excel

Marie -  
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
A voir également:

14 réponses

qmike Messages postés 1509 Date d'inscription   Statut Membre Dernière intervention   594
 
bonjour
en Vba
pour la denière ligne
Range("A65536").End(xlUp).Select
0
Marie
 
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
0
leplot Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   131
 
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.

0
Marie
 
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....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
leplot Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   131
 
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.
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.
0
Marie
 
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
0
qmike Messages postés 1509 Date d'inscription   Statut Membre Dernière intervention   594
 
oui
ne valait-til pas mieux un onglet par utilisateur ??
0
Marie
 
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??
0
leplot Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   131
 
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.
0
leplot Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   131
 
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


0
Marie
 
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..... :-(
0
leplot Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   131
 
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)
0
Marie
 
Oui, mais ce qui me parrait bizzare c d'écrire dans mon code "dernièreLigne.... je l'écris comme ça et "Prénom", ne prend pas peur je t'ais prévenu de mon niveau.....
0
leplot Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   131
 
Re

J'ai utilisé des variables sans connaître les tiennes.
Envoie-moi une copie de ton code je l'adapterai
0
Marie
 
désolé j'avais pas vu que tu m'avais répondu j'étais en réunion, je peux t'envoyé mon fichier pour que tu vois nan! il me semble que se serai plus simple, mais es-ce que tu as une adresse perso parce que je n'ais pas trop envie de laisser mon fichier sur le forum?
0
leplot Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   131
 
leplot@neuf.fr
0