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 :

Aide pour erreur de code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2010
    Messages : 59
    Par défaut Aide pour erreur de code
    Re bonjour,
    Faute d'avoir une réponse à mo précédent post j'en refait un autre ici mais concernant une autre erreur de code
    Je veux mettre deux boutons, précédent et suivant pour mon tableau (en Pj)

    Seulement j'ai pourtant tout essayé je ne trouve pas mon erreur
    Qui saurait me donner les informations nécessaire pour la comprendre?
    Merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CmdSuivant_Click()                    'Bouton Suivant
    Dl = Sheets("Reines").Range("A456541").End(xlUp).Row
    currentRow = CurentRow + 1                     'Dl = dernière ligne
     
        If currentRow = currentRow + 1 Then
            currentRow = Dl                                 'Si la dernière ligne n'a plus de données
            MsgBox "Vous êtes arrivé au bout de la liste"
        End If
            TextBox1.Text = Cells(currentRow, 1).Value
            TextBox2.Text = Cells(currentRow, 2).Value
     
    End Sub


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CndPrécédent_Click()                  'Bouton Précédent
        currentRow = currentRow - 1
        If currentRow > 1 Then
            TextBox1.Text = Cells(currentRow, 1).Value
            TextBox2.Text = Cells(currentRow, 2).Value
        ElseIf currentRow = 1 Then
        currentRow = currentRow + 1
        MsgBox "Vous êtes au premier enregistrement"
        End If
     
    End Sub
    Images attachées Images attachées  

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par papy_polo67 Voir le message
    mon tableau (en Pj)
    Beaucoup de participants n'ouvrent pas les fichiers joints. https://www.developpez.net/forums/d8...s-discussions/

    Qui saurait me donner les informations nécessaire pour la comprendre?
    Peut-être toi-même pourrais-tu donner les informations nécessaires pour comprendre ton problème.

    Comment se manifeste ce dysfonctionnement ?
    Est-ce une erreur de syntaxe dans l'éditeur ? A quelle ligne de code ? Quel est le message de l'éditeur ?
    Est-ce un bug d'exécution ? Quel est le message d'erreur ? Quelle est la ligne désignée par le débugage ?
    Est un résultat non conforme ? Quel résultat était attendu et quel résultat est obtenu ?

    currentRow = CurentRow + 1 'Dl = dernière ligne
    Est-ce normal d'avoir deux variables aux noms proches mais différents ?
    Si c'est une erreur, je te conseille fortement de mettre un Option Explicit qui oblige la déclaration de variables et qui met rapidement en lumière ce type d'erreur.

    Visiblement cette variable sert dans différents Sub. L'as-tu déclarée au niveau supérieur (avant les Sub) ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2010
    Messages : 59
    Par défaut
    Lorsque je clique sur les boutons précédent ou suivant, rien ne se passe...

    Concernant la pièce jointe, elle est affichée, c'est l'entête du tableau pour avoir un aperçu de ce qui est demandé.

    Théoriquement CurrentRox=CurrentRow +1 ou -1 signifierait qu'on se place dans la dernière ou première ligne du tableau pour avancer ou reculer.

    Ce code que j'essais d'adapter est conçu pour des lignes (Row), alors que mon tableau est en colonnes

    Je suis débutant et comme chacun je peux comprendre des explications dans leurs intégralités, mais pas avec des bribes.
    Soyez svp indulgent

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je vois déjà deux anomalies dans les procédures publées
    1. en ligne 5 de la procédure CmdSuivant_Click, le test me semble farfelu If currentRow = currentRow + 1 Then. Il est évident que CurrentRow ne pourra jamais être égal à CurrentRow + 1
    2. en ligne 7 de la procédure CndPrécédent_Click() où l'on voit currentRow = currentRow + 1 alors que d'après moi, cela devrait être une soustraction.

    Je me suis arrêté là mais il y a sans doute d'autres erreurs de ce genre
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2010
    Messages : 59
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Je me suis arrêté là mais il y a sans doute d'autres erreurs de ce genre
    Merci pour votre aide

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai écris en vitesse un cas simple à adapter à ton cas

    Une liste de données se trouvant dans la feuille nommée Data (CodeName = shtData) du classeur où se trouve le code VBA (ThisWorkbook).

    Un UserForm avec quatre contrôles
    1. blName
    2. txName
    3. cmdPrevious
    4. cmdNext


    Illustration ci-dessous

    Nom : 200319 dvp Next Previous Record.png
Affichages : 176
Taille : 25,5 Ko

    Code des procédures du UserForm

    En tête de module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Dim rng As Range          ' Plage complète (Titre + données)
    Dim rngData As Range      ' Plage des données
    Dim CurrentRecord As Long ' Enregistrement courant
    Dim minRecord As Long     ' Premier enregistrement
    Dim maxRecord As Long     ' Dernier enregistrement
    Procédure événementielle UserForm_Activate
    La ligne 2 pourrait être remplacée par Set rng = ThisWorkbook.Worksheets("Data").Range("A1").CurrentRegion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_Activate()
      Set rng = shtData.Range("A1").CurrentRegion  ' Equivalent à Ctrl & *
      With rng
        Set rngData = .Offset(1).Resize(.Rows.Count - 1)
      End With
      ' Définition des limites inférieures et supérieures des données
      minRecord = 1: maxRecord = rngData.Rows.Count
      ' Commence l'eregistrement à 1
      CurrentRecord = minRecord
     
      ReadRecord CurrentRecord ' Lecture de l'enregistrement courant
    End Sub
    Procédure événementielle cmdNext_Click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub cmdNext_Click()
      CurrentRecord = CurrentRecord + 1
      If CurrentRecord > maxRecord Then CurrentRecord = maxRecord
      ReadRecord CurrentRecord ' Lecture
    End Sub
    Procédure événementielle cmdPrevious_Click
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub cmdPrevious_Click()
      CurrentRecord = CurrentRecord - 1
      If CurrentRecord < minRecord Then CurrentRecord = minRecord
      ReadRecord CurrentRecord ' Lecture
    End Sub
    Procédure ReaRecord
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ReadRecord(RecordNumber As Long)
      Me.txtName.Value = rngData.Cells(RecordNumber, 2).Value
    End Sub
    [EDIT 2] (20 mars 2020)
    Ajouté le classeur de démonstration
    Fichiers attachés Fichiers attachés
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. [XL-2003] Aide pour erreur dans un code Vba Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/05/2009, 08h48
  2. [VB.NET] besoin d'aide pour déchiffrer un code
    Par pcdj dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/06/2006, 12h32
  3. Aide pour comprendre un code
    Par Spacy_green dans le forum Assembleur
    Réponses: 2
    Dernier message: 13/02/2006, 14h22
  4. Aide pour comprendre le code
    Par jfreuff dans le forum Assembleur
    Réponses: 2
    Dernier message: 31/01/2006, 18h54
  5. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 07/11/2005, 00h30

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