Erreur d'éxécution 9
Résolu/Fermé
Lucatana
Messages postés
7
Date d'inscription
lundi 27 mai 2013
Statut
Membre
Dernière intervention
27 mai 2013
-
27 mai 2013 à 10:54
Lucatana Messages postés 7 Date d'inscription lundi 27 mai 2013 Statut Membre Dernière intervention 27 mai 2013 - 27 mai 2013 à 14:49
Lucatana Messages postés 7 Date d'inscription lundi 27 mai 2013 Statut Membre Dernière intervention 27 mai 2013 - 27 mai 2013 à 14:49
A voir également:
- Erreur d'éxécution 9
- Erreur 0x80070643 - Guide
- Erreur d'execution 1004 - Forum Programmation
- Erreur np-34958-9 - Forum PS4
- Iptv erreur de lecture - Forum TV & Vidéo
- Erreur d'execution 13 ✓ - Forum Programmation
11 réponses
Utilisateur anonyme
Modifié par le père. le 27/05/2013 à 11:07
Modifié par le père. le 27/05/2013 à 11:07
Bonjour
A priori, l'erreur 9 est une erreur d'indice. N'aurais-tu pas changé le nom de ta feuille "Feuil1" ?
Pour voir si c'est bien ça l'erreur, ajoute juste avant ton while :
A priori, l'erreur 9 est une erreur d'indice. N'aurais-tu pas changé le nom de ta feuille "Feuil1" ?
Pour voir si c'est bien ça l'erreur, ajoute juste avant ton while :
Dim x Set x = Sheets("Feuil1")
Lucatana
Messages postés
7
Date d'inscription
lundi 27 mai 2013
Statut
Membre
Dernière intervention
27 mai 2013
27 mai 2013 à 11:11
27 mai 2013 à 11:11
Bonjour Le père et merci de ta réponse,
Dans l'explorateur de projet c'est écrit: Feuil1 (formulaire) et Feuil2 (BdD Client). Je viens d'essayer avec "while sheets ("formulaire").Cells (f_client, 6) <> "" et de remplacer tout le reste sur la page mais c'est toujours le même message d'erreur.
Dans l'explorateur de projet c'est écrit: Feuil1 (formulaire) et Feuil2 (BdD Client). Je viens d'essayer avec "while sheets ("formulaire").Cells (f_client, 6) <> "" et de remplacer tout le reste sur la page mais c'est toujours le même message d'erreur.
Lucatana
Messages postés
7
Date d'inscription
lundi 27 mai 2013
Statut
Membre
Dernière intervention
27 mai 2013
27 mai 2013 à 11:15
27 mai 2013 à 11:15
oups excuse moi je n'avais pas vu la fin de ton message, je recommence alors!!! désolée c'est dur le lundi matin ^^
Lucatana
Messages postés
7
Date d'inscription
lundi 27 mai 2013
Statut
Membre
Dernière intervention
27 mai 2013
27 mai 2013 à 11:18
27 mai 2013 à 11:18
Alors après essai, maintenant l'erreur s'est déplacée c'est sur le "Set x = Sheets("Feuil1")" qu'est l'erreur "9". ça veut dire que tu avais raison et que c'est bien une erreur de nom alors?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
27 mai 2013 à 11:54
27 mai 2013 à 11:54
C'est normal que tu n'aies pas vu la fin de mon message je l'ai modifié après coup.
D'après ce que tu écris, tes feuilles ne s'appellent pas "Feuil1" et "Feuil2" mais "formulaire" et "BdD client". Il faut que tu corriges ces noms dans ton code.
Conseil : évite de ré-écrire un nom de feuille 10 fois dans le même script, ça te complique la tâche si tu veux le modifier (pour adapter à une autre feuille, ou simplement parce que le nom ne te plaît plus). Tu peux mettre des références aux feuilles dans des variables :
Et ensuite tu n'utilises plus que tes variables partout où apparaissaient Sheets ("Feuil1") et Sheets("Feuil2"), par exemple :
D'après ce que tu écris, tes feuilles ne s'appellent pas "Feuil1" et "Feuil2" mais "formulaire" et "BdD client". Il faut que tu corriges ces noms dans ton code.
Conseil : évite de ré-écrire un nom de feuille 10 fois dans le même script, ça te complique la tâche si tu veux le modifier (pour adapter à une autre feuille, ou simplement parce que le nom ne te plaît plus). Tu peux mettre des références aux feuilles dans des variables :
Dim fFormul as WorkSheet,fBdd as WorkSheet Set fFormul=Sheets("formulaire") Set fBdd=Sheets("BdB Client")
Et ensuite tu n'utilises plus que tes variables partout où apparaissaient Sheets ("Feuil1") et Sheets("Feuil2"), par exemple :
fFormul.Cells(f_pays, 6) = fBdd.Cells(11, num_col)
Lucatana
Messages postés
7
Date d'inscription
lundi 27 mai 2013
Statut
Membre
Dernière intervention
27 mai 2013
27 mai 2013 à 11:54
27 mai 2013 à 11:54
Bonjour Yoda,
Oui mais il y a la condition while: Num_col est incrémenté tant que la cellule n'est pas vide mais dès que cela dépasse le tableau elle est vide donc la boucle s'interrompt non?
Merci de ta réponse en tous cas
Oui mais il y a la condition while: Num_col est incrémenté tant que la cellule n'est pas vide mais dès que cela dépasse le tableau elle est vide donc la boucle s'interrompt non?
Merci de ta réponse en tous cas
Lucatana
Messages postés
7
Date d'inscription
lundi 27 mai 2013
Statut
Membre
Dernière intervention
27 mai 2013
Modifié par Lucatana le 27/05/2013 à 12:12
Modifié par Lucatana le 27/05/2013 à 12:12
Le père, merci beaucoup pour ton message ça a marché et pour le premier nom ça s'est tout affiché!!! Je pense que tous mes collègues ont pris peur en m'entendant crier "ça marche!!!!"
Manque de chance quand je change le nom du client ça marche plus...
Maintenant j'ai une erreur "1004" (erreur définie par l'application ou par l'objet) sur la ligne if fFormul.Cells(f_client, 6) = fBdd.Cells (10, num_col) then
Manque de chance quand je change le nom du client ça marche plus...
Maintenant j'ai une erreur "1004" (erreur définie par l'application ou par l'objet) sur la ligne if fFormul.Cells(f_client, 6) = fBdd.Cells (10, num_col) then
Utilisateur anonyme
27 mai 2013 à 13:30
27 mai 2013 à 13:30
Tu tombes maintenant dans l'erreur annoncée par Yoda.
Si ton 'if' n'est jamais vérifié, tu augmentes num_col jusqu'à ce qu'il déborde...
Il faut mettre une autre condition pour arrêter ta recherche avant.
Je réfléchis à cette condition (je ne connais pas très bien VBA) et je reviens
Si ton 'if' n'est jamais vérifié, tu augmentes num_col jusqu'à ce qu'il déborde...
Il faut mettre une autre condition pour arrêter ta recherche avant.
Je réfléchis à cette condition (je ne connais pas très bien VBA) et je reviens
Utilisateur anonyme
27 mai 2013 à 13:51
27 mai 2013 à 13:51
Comme je suppose que tu ne veux pas aller au delà de la zone où fBdd.Cells (10, num_col) est vide, il faut détecter la première colonne vide de la ligne 10 et s'y arrêter.
Dim Limite ... Limite=fBdd.Range("IV10").End(xlToLeft).Column ' en principe, IV10 est la dernière cellule de la ligne 10 ... Else num_col = num_col + 1 If num_col > Limite then exit sub End If
Lucatana
Messages postés
7
Date d'inscription
lundi 27 mai 2013
Statut
Membre
Dernière intervention
27 mai 2013
Modifié par Lucatana le 27/05/2013 à 14:50
Modifié par Lucatana le 27/05/2013 à 14:50
Excuse moi mon ordinateur avait perdu le réseau, impossible de me reconnecter... Donc je l'ai rallumé et là je relance excel et ça marche! Je n'ai même pas encore fait les modifications que tu m'as dit plus haut (je vais les faire quand même parce qu'on est jamais trop prudent!) en tous cas tout marche et pour tous les noms!!!
Un grand grand grand merci pour ton aide et ta patience!!!
Je vais enfin pour avoir avancer un peu! 1 semaine pour une macro je commençais à désespérer -_-' merci merci merci de m'avoir aidée!!!
Un grand grand grand merci pour ton aide et ta patience!!!
Je vais enfin pour avoir avancer un peu! 1 semaine pour une macro je commençais à désespérer -_-' merci merci merci de m'avoir aidée!!!