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 :

Erreur d'exécution 9 lors d'une recherche de feuille [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 20
    Par défaut Erreur d'exécution 9 lors d'une recherche de feuille
    Bonjour à tous

    J'en viens à vous demander de l'aide car je bloque actuellement sur une macro. Je vous explique ce que je souhaite faire :

    J'ai un document où je peux générer 2 types de questionnaires, et ce, plusieurs fois indépendamment du type de questionnaire. (Questionnaire 1 : Questionnaire Prod et questionnaire 2 = Questionnaire HP). Chaque questionnaire est sur une feuille du classeur et je précise qu'il n y a pas de limite sur le nombre de questionnaires.

    Exemple : J'ai 5 questionnaires et donc 5 feuilles dans mon classeur : Questionnaire HP / Questionnaire HP (2) / Questionnaire HP (3) / Questionnaire Prod (2) / Questionnaire Prod (2)

    J'ai à la fin de mon classeur Excel une feuille résultat où je souhaite mettre en forme un tableau qui récapitule les réponses aux questionnaires générés.

    Et c'est là qu'intervient le problème. Dans la logique de mon code :
    1.1 - Je cherche si la feuille "Questionnaire HP" existe.
    1.2 - Si "Questionnaire HP" existe alors, sur une ligne, colonne 1, je note le nom du classeur.
    1.3 - Ensuite j'ai une boucle allant de i= 2 to 10 pour faire une recherche si les feuilles "Questionnaire HP (i)" existent. Et c'est là que le problème intervient, car au bout d'un moment "Questionnaire (i)" n'existe pas, et au lieu d'arrêter la boucle j'ai un message d'erreur :

    Nom : pb.JPG
Affichages : 246
Taille : 16,9 Ko
    Et puis la suite de mon code ne se déroule plus, le programme s'arrête là.

    Savez vous comment faire pour que le programme continu ?

    PI : voici une partie de mon code (bon c'est peut-être pas hyper propre, je débute )

    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
    'Si la feuille Questionnaire HP est visible alors on l'ajoute dans le tableau
    If Sheets("Questionnaire HP").Visible = True Then
     
        Sheets("Résultat").Cells(9, 4).Value = "Questionnaire HP"
        Sheets("Résultat").Cells(10, 4).Value = "XXXX"
     
    'Si la feuille Questionnaire HP (i) est visible alors on l'ajoute dans le tableau
     
        For n = 2 To 6
            NomFeuille = "Questionnaire HP " & "(" & n & ")"
            If Sheets(NomFeuille).Visible = True Then
                Sheets("Résultat").Cells(9, 4 + 2 * (n - 1)).Value = "Questionnaire HP"
                Sheets("Résultat").Cells(10, 4 + 2 * (n - 1)).Value = "XXXX"
                Y = 2 * (n - 1)
            Else
        Exit For
     
            End If
         Next n
     
    End If
    Merci d'avance pour votre aide !

    MaelRsn

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu sur le Forum,

    Pour confirmation.
    Sur quelle ligne de code (surlignée en jaune), l'erreur survient-elle?

    car au bout d'un moment "Questionnaire (i)" n'existe pas, et au lieu d'arrêter la boucle j'ai un message d'erreur
    :
    Dans ce cas, il te faut gérer les bornes de la boucle, par une condition ou autre méthode.

  3. #3
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 20
    Par défaut
    Bonjour MarcelG,

    merci pour votre aide, alors quand je tape sur F8 pour dérouler le code pas à pas et alors l'erreur survient à cette ligne de code :

    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
    'Si la feuille Questionnaire HP est visible alors on l'ajoute dans le tableau
    If Sheets("Questionnaire HP").Visible = True Then
     
        Sheets("Résultat").Cells(9, 4).Value = "Questionnaire HP"
        Sheets("Résultat").Cells(10, 4).Value = "XXXX"
     
    'Si la feuille Questionnaire HP (i) est visible alors on l'ajoute dans le tableau
     
        For n = 2 To 6
            NomFeuille = "Questionnaire HP " & "(" & n & ")"
            If Sheets(NomFeuille).Visible = True Then
                Sheets("Résultat").Cells(9, 4 + 2 * (n - 1)).Value = "Questionnaire HP"
                Sheets("Résultat").Cells(10, 4 + 2 * (n - 1)).Value = "XXXX"
                Y = 2 * (n - 1)
            Else
        Exit For
     
            End If
         Next n
     
    End If

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour maelrsn, Bonjour le Forum,

    maelrsn,

    Exécute le code.
    Lorsque l'erreur survient, tu peux adopter le processus suivant dans le projet VBE:
    - Affichage de la fenêtre Exécution (CTRL + G)
    - Ecrire au sein de cette fenêtre (ne pas omettre le point d'interrogation)
    - Activer la touche "Entrée"
    - Constater l'existence du nom de la feuille dans ton classeur.

    A plus tard.

  5. #5
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2017
    Messages : 20
    Par défaut
    @MarcelG effectivement quand je réalise la manip la feuille n'existe pas dans mon document.

    Je précise que le message d'erreur apparait lors de l'itération à partir de laquelle la feuille recherchée n'existe pas. Donc de ce que je comprends c'est que le message apparaît à partir du moment où la boucle ne trouve plus la feuille dans le classeur.

    J'ai donc deux possibilités :

    - Soit il y a une commande qui permet de ne plus avoir ce message d'erreur.
    - Soit je gère les bornes de la boucle de manière à ce que borne sup = incrément max de la feuille

    Ex : si j'ai "Questionnaire HP / Questionnaire HP(2) / Questionnaire HP (3) / Questionnaire HP (4)" alors il faut que je trouve il faudrait que je trouve un moyen d'arrêter ma borne sup à 4.. mais c'est là que je bloque

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    La 2ème solution, bien entendu.

    Au demeurant, il est possible de remplacer une ou deux borne(s) par une variable ou une propriété numérique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 To ThisWorkbook.Worksheets.Count

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

Discussions similaires

  1. [AC-2013] Erreur d'exécution 3073 lors d'appel à une requête mise à jour.
    Par Mat08 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 17/07/2015, 13h10
  2. Pourquoi ai-je une erreur lors d'une recherche si la valeur n'existe pas ?
    Par blackndoor dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/03/2009, 11h22
  3. Gerer les message d'erreur lors d'une recherche
    Par papy75 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 27/03/2008, 11h32
  4. Erreur d'exécution '1004' lors d'une mise en page
    Par alex.a dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2007, 09h00

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