Posez votre question Signaler

Userform- Excel

Marie - Dernière réponse le 28 avril 2009 à 13:42
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
Lire la suite 

Userform- Excel »

16 réponses
Réponse
+0
moins plus
bonjour
en Vba
pour la denière ligne
Range("A65536").End(xlUp).Select
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.

Ajouter un commentaire
Réponse
+0
moins plus
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....
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
oui
ne valait-til pas mieux un onglet par utilisateur ??
Ajouter un commentaire
Réponse
+0
moins plus
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??
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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


Ajouter un commentaire
Réponse
+0
moins plus
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..... :-(
Ajouter un commentaire
Réponse
+0
moins plus
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)
Marie - 28 avril 2009 à 09:44
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.....
Ajouter un commentaire
Réponse
+0
moins plus
Re

J'ai utilisé des variables sans connaître les tiennes.
Envoie-moi une copie de ton code je l'adapterai
Marie - 28 avril 2009 à 13:06
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?
Ajouter un commentaire
Réponse
+0
moins plus
leplot@neuf.fr
Ajouter un commentaire
Ce document intitulé « Userform- Excel » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook