IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Naviguer dans une feuille [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Points : 35
    Points
    35
    Par défaut Naviguer dans une feuille
    Bonjour à tous,

    la gestion d'une liste de matériels avec des liens hypertexte est pour moi l'occasion de me familiariser avec VBA. Mais voilà, j'en suis à mes tout débuts.

    Mon problème est le suivant :
    J'ai créé une Userform avec différentes TextBox. Je réussi à afficher correctement tous les champs. Le problème se situe dans la "navigation", c'est-à-dire lorsque je monte ou descend avec un clic sur le bouton correspondant et plus particulièrement lorsque j’atteins la première cellule (A2 - la première ligne comporte les désignations des colonnes), resp. la fin de mon tableau. J'ai beau chercher, mais avec le terme de "navigation" les réponses de Google m'envoient vers internet. Je me tourne donc vers vous dans l'espoir de trouver une réponse à ma question :

    comment gérer le fait que l'on arrive aux limites d'une feuille en évitant le plantage.

    Merci d'avance de votre coup de pouce.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    '---------------------Gérer les boutons de navigation----------------------------------------------------------------------------------------
    '
    Private Sub cmdPrec_Click()
     
    Dim Position As String
     
        If Position = Range("A2") Then
            MsgBox "Vous êtes arrivés au début de la liste"
     
     
            TextBox1.Value = ActiveCell.Value
     
            ActiveCell.Offset(0, 1).Select
            TextBox2 = ActiveCell.Value
     
            ActiveCell.Offset(0, 1).Select
            TextBox3 = ActiveCell.Value
     
            ActiveCell.Offset(0, 1).Select
            TextBox5 = ActiveCell.Value
     
            ActiveCell.Offset(0, 1).Select
            TextBox7 = ActiveCell.Value
     
     
            ActiveCell.Offset(0, 10).Select
            TextBox4 = ActiveCell.Value
     
            ActiveCell.Offset(0, 2).Select
            TextBox6 = ActiveCell.Value
     
            ActiveCell.Offset(0, 2).Select
            TextBox8 = ActiveCell.Value
     
        Else
     
     
            ActiveCell.Offset(1, 0).Select
            TextBox1.Value = ActiveCell.Value
     
            ActiveCell.Offset(0, 0).Select
            TextBox2 = ActiveCell.Value
     
            ActiveCell.Offset(0, 1).Select
            TextBox3 = ActiveCell.Value
     
            ActiveCell.Offset(0, 1).Select
            TextBox5 = ActiveCell.Value
     
            ActiveCell.Offset(0, 1).Select
            TextBox7 = ActiveCell.Value
     
     
            ActiveCell.Offset(0, 10).Select
            TextBox4 = ActiveCell.Value
     
            ActiveCell.Offset(0, 2).Select
            TextBox6 = ActiveCell.Value
     
            ActiveCell.Offset(0, 2).Select
            TextBox8 = ActiveCell.Value
     
            If ActiveCell.Address > Range("A1") Then
            MsgBox ActiveCell.Address
     
                ActiveCell.Offset(-1, -17).Select   'Retour en colonne "A", ligne = + 1
     
            End If
     
     
        End If
     
     
     
    End Sub
     
    Private Sub cmdSuiv_Click()
     
        TextBox1.Value = ActiveCell.Value
     
        ActiveCell.Offset(0, 0).Select
        TextBox2 = ActiveCell.Value
     
        ActiveCell.Offset(0, 1).Select
        TextBox3 = ActiveCell.Value
     
        ActiveCell.Offset(0, 1).Select
        TextBox5 = ActiveCell.Value
     
        ActiveCell.Offset(0, 1).Select
        TextBox7 = ActiveCell.Value
     
     
        ActiveCell.Offset(0, 10).Select
        TextBox4 = ActiveCell.Value
     
        ActiveCell.Offset(0, 2).Select
        TextBox6 = ActiveCell.Value
     
        ActiveCell.Offset(0, 2).Select
        TextBox8 = ActiveCell.Value
     
        ActiveCell.Offset(1, -17).Select   'Retour en colonne "A", ligne = + 1
     
     
     
    End Sub

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Ou est-ce que tu renseignes la variable "Position" ?

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça si ça peut d'aider

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Bonjour et merci pour vos réponses rapides.

    Citation Envoyé par rdurupt
    http://www.developpez.net/forums/d14...e/#post7819625
    Pas compris grand'chose. J'y ai surtout vu la gestion des scrollbar, ce qui, à priori, ne correspond pas à l'action que je désire faire. Mon Userform est fixe. Merci quand-même.

    Citation Envoyé par Daniel.C
    Ou est-ce que tu renseignes la variable "Position" ?
    Excellente question. Je vous remercie de me l'avoir posée. La réponse est : nulle part ! Cette variable est, à mon avis, inutile. ActiveCell.Address peut être utilisé directement à la place de "Position". En fait, j'avais trouvé un bout de code qui m'intéressait pour mon projet, mais l'adaptation n'est pas top.

    J'avoue que je tourne en rond. La solution n'est pas loin. En utilisant des MsgBox ActiveCell.Address je peux contrôler la progression du programme, mais le test sur "A2" ne fonctionne pas, ce qui a pour conséquence que l'instruction "ActiveCell.Offset(-1, -17).Select 'Retour en colonne "A", ligne = + 1" fait boguer le programme à un moment donné.

    Une piste ?

    Merci d'avance et cordiales salutations

  5. #5
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,

    comme je ne vois pas trop ce que tu cherches à faire, peux-tu envoyer un fichier avec des données bidon et des explications, soit en "Xls", soit compressé, afin de voir au moins ton Usf et tes macros

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    c'est quand c'est le plus simple qu'on a le plus de mal à l'expliquer.

    Dans le fichier annexé se trouve un classeur nommé "Annuaire". La colonne "A" recense en fait des répertoires d'installation, par ex. 7107, 9004, 9600...

    Le programme est, pour l'instant, composé de 2 Userform :
    - frmMenu. Cette partie fonctionne, mais mérite d'être retravaillée.
    - frmGerer. Ce sont, pour l'instant, les boutons < ,> ,|<, >| (précédent, suivant, premier, dernier) qui me posent problème. Notamment le code de "Private Sub cmdPrec_Click()"

    Le Userform frmGerer fonctionne de la manière suivante :
    - Saisie du nom d'un répertoire dans la TextBox1 puis contrôle si ce répertoire existe par un clic sur le cmdExist (?). Si oui, affichage des informations dans les différentes TextBox. Si non, message selon lequel ce répertoire n'existe pas. A partir de là on peut saisir de nouvelles données qui seront enregistrées par un clic sur le bouton cmdNouveau. Cette partie fonctionne à condition de renseigner tous les champs, mais ça c'est un autre problème.
    - Affichage des informations des lignes suivantes avec le bouton cmdSuiv.

    Problématique :
    - La ligne 1 contient les en-têtes des colonnes
    - La cellule "A2" contient la valeur "7107".
    - En appuyant sur le bouton ">" (cmdSuiv) les informations contenue dans la ligne 3 sont affichées. La TextBox1 aura donc comme valeur "9004".
    - En appuyant sur le bouton "<" (cmdPrec) la TextBox1 affiche l'information contenue dans la cellule précédente (donc "A2" = 7107). Mais si l'utilisateur appuie à nouveau sur le bouton "<", l'opération doit déclencher un message signalant que l'on se trouve sur le premier enregistrement et la Userform doit continuer à afficher les informations relatives à la ligne 2. J'appellerais cela une navigation séquentielle dans la feuille de calcul.

    C'est tout bête et je suppose que la solution est aussi bête que ma question. Mais là, je tourne en rond. Je ne sais pas où je fais une erreur d'analyse.

    Merci d'avance de l'intérêt que vous portez à ma requête.
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je ne peux pas ouvrir ton fichier, peux-tu le compresser en Zip et le renvoyer

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Un classeur exemple :

    nounours1952.xls

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Hobby
    Inscrit en
    Octobre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Hobby

    Informations forums :
    Inscription : Octobre 2013
    Messages : 62
    Points : 35
    Points
    35
    Par défaut
    Re,

    merci Daniel.C, c'est exactement ce que je cherche à faire. Juste une petite remarque. L'information de la msgbox lorsqu'on arrive à la fin du fichier, indique qu'on est au début. Mais ça, c'est de la cosmétique.

    C'est la première fois que je prends le courage d'intervenir sur un forum parce que je suis coincé avec un problème. Permettez-moi de vous remercier et de vous féliciter pour votre réactivité. Je ne m'attendais pas à des réponses aussi rapides, surtout après la lecture de la charte.
    Citation Envoyé par casefayere
    Je ne peux pas ouvrir ton fichier, peux-tu le compresser en Zip et le renvoyer
    . Merci casefayere, le problème est résolu.

    Cordialement

  10. #10
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    L'information de la msgbox lorsqu'on arrive à la fin du fichier, indique qu'on est au début.
    Le copier / coller fou a encore frappé !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Naviguer dans les feuilles pendant l'execution d'une macro
    Par scons dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/04/2011, 15h33
  2. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23
  3. [RAVE]Composant RTF dans une feuille RAVE ?
    Par hpalpha dans le forum Rave
    Réponses: 3
    Dernier message: 29/03/2004, 19h25
  4. [VB6] [Interface] Nbre de contrôles maxi dans une feuille
    Par Midou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/10/2002, 16h09
  5. [VB6] [Excel] Insérer une image dans une feuille
    Par mathias dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 09/10/2002, 07h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo