Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 VBA MsgBox si dernière ligne atteinte

M'uru

XLDnaute Nouveau
Bonjour à tous, je m'excuse d'avance pour mon manque d'expérience sur Excel ainsi qu'en VBA, j'ai passé plusieurs jours à chercher une réponse sur les forums, cependant je ne trouve pas, j'espère donc ne pas vous faire perdre votre temps alors qu'il y aurait une potentielle réponse quelque part..

Sincèrement désolé de ne pouvoir mettre un fichier en lien, si mes explications ne suffisent pas pour pouvoir être aidé je le comprendrai.

Ma requête est la suivante :

J'ai un tableau Excel avec des données de clients ( num. d'installation, nom de client, consom, etc ), j'ai créé des boutons dans ce tableau qui permettent de passer du client 1 au client 2, du 2 au 3, en listant toutes les info de chaque client, l'idée étant d'épurer la BDD pour que mes collègues puissent facilement avoir accès aux info des clients sans avoir à se balader dans une BDD de 30'000 clients. La base de donnée est dans une autre feuille que le tableau.

Mon problème est que je souhaiterai créer un MsgBox dès que l'utilisateur du tableau arrive à la dernière ligne de la base de donnée, dès que l'utilisateur arrive sur le dernier client, il faudrait un MsgBox qui l'avertisse.

Pourquoi ? Car lorsque j'arrive à mon dernier client, tout en bas de ma base de donnée, ma rechercheV s'arrête, et le tableau m'offre des N/A error, je suppose qu'il faudrait créer une sorte de boucle pour que lorsque j'arrive au dernier client, la flèche que j'ai créé qui permet de descendre dans la BDD reparte sur le 1er client ? Cependant je préfère ne pas faire comme ça, car repartir au client 1 pourrait induire en erreur mes collègues, et donc il est nécessaire que lorsque la dernière ligne est atteinte, un MsgBox pop pour dire qu'il faut s'arrêter.

Pour conclure donc, j'aurai - si possible et s'il vous plait - besoin d'aide pour créé la MsgBox lorsque je suis sur le dernier client.

Merci d'avance et bonne journée à tout ceux qui lisent ce message !
 
Solution
Re,
il est difficile voire impossible d'écrire du VBA hors contexte.
En PJ un exemple, les flèches permettent de monter et descendre dans la BDD.
J'ai mis deux messages d'alerte, quand on force vers le haut ou vers le bas.
VB:
Sub Haut()
    Application.ScreenUpdating = False
    Pointeur = Pointeur - 1
    If Pointeur < 1 Then
        Pointeur = 1
        MsgBox "Premier client déjà atteint"
        Exit Sub
    End If
    With Sheets("BDD")
        [B6] = .Cells(Pointeur, "A")
        [C6] = .Cells(Pointeur, "B")
    End With
End Sub
Sub Bas()
    Application.ScreenUpdating = False
    Pointeur = Pointeur + 1
    DL = Sheets("BDD").Range("A65500").End(xlUp).Row
    If Pointeur > DL Then
        Pointeur = DL
        MsgBox "Dernier...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour M'uru, et bienvenu sur XLD,
J'ai bien peur qu'il vous faille créer un petit fichier test car au vu des explications ... on a du mal à suivre.
Juste un petit exemple avec une dizaine de lignes ( anonymes bien sur ) et qui montre le problème, et l'explication de votre attendu.
 

M'uru

XLDnaute Nouveau
Je m'excuse, en me relisant effectivement tout cela semble un peu.. difficile à suivre, j'ai fait un fichier de test j'espère que ce sera suffisant =>

C'est une reproduction très simplifiée de mon tableau et BDD, deux flèches pour monter / descendre de n° de client grâce à une rechercheV

Et donc si j'arrive à la ligne 21 de la BDD ( dans mon exemple ) il faudrait si possible un MsgBox qui dise " Dernier client - travail terminé " par exemple !

Merci d'avance,
Cordialement, M'uru.
 

Pièces jointes

  • xldl.xlsx
    13 KB · Affichages: 9

M'uru

XLDnaute Nouveau
En faite le tableau n'a pas d'importance, je me rend compte que la seule chose dont on a besoin est de la BDD, les flèches fonctionnent, tout va bien, à part que j'aurai besoin d'un MsgBox qui pop lorsque l'utilisateur arrive sur la dernière ligne de la base de donnée ( ligne 21 dans l'exemple )

J'ai simplement fait un tableau pour montrer à quoi mon Excel ressemble, mais ça n'a aucune importance, seule la BDD compte, je suppose que je peux faire pop un MsgBox lorsque l'utilisateur arrive à la dernière ligne ?

( l'utilisateur passe de ligne en ligne dans la base de donnée grâce à une macro que j'ai faite )

Merci d'avance, désolé de ne pas être clair, en espérant que ce soit mieux.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
il est difficile voire impossible d'écrire du VBA hors contexte.
En PJ un exemple, les flèches permettent de monter et descendre dans la BDD.
J'ai mis deux messages d'alerte, quand on force vers le haut ou vers le bas.
VB:
Sub Haut()
    Application.ScreenUpdating = False
    Pointeur = Pointeur - 1
    If Pointeur < 1 Then
        Pointeur = 1
        MsgBox "Premier client déjà atteint"
        Exit Sub
    End If
    With Sheets("BDD")
        [B6] = .Cells(Pointeur, "A")
        [C6] = .Cells(Pointeur, "B")
    End With
End Sub
Sub Bas()
    Application.ScreenUpdating = False
    Pointeur = Pointeur + 1
    DL = Sheets("BDD").Range("A65500").End(xlUp).Row
    If Pointeur > DL Then
        Pointeur = DL
        MsgBox "Dernier client déjà atteint"
        Exit Sub
    End If
    With Sheets("BDD")
        [B6] = .Cells(Pointeur, "A")
        [C6] = .Cells(Pointeur, "B")
    End With
End Sub
A vous de "picorer" dans ce code pour l'adapter à vos besoins.
 

Pièces jointes

  • xldl.xlsm
    20 KB · Affichages: 9

M'uru

XLDnaute Nouveau
Bonsoir et désolé pour la réponse tardive !

J'ai pu tester votre code en l'ayant adapté et tout fonctionne à merveille ! Merci beaucoup pour ce gagne-temps, j'apprécie et ça me permet d'apprendre car les codes ne sont pas très long.

ps : en me baladant sur le forum j'ai vu que beaucoup de gens demandent de l'aide sans donner de contexte, je vais apprendre à faire des exemples correctes pour le futur, merci encore !
 

Discussions similaires

Réponses
16
Affichages
639
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…