Récupérer des données dans un autre classeur

Dutrou Messages postés 7 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mai 2005 - 16 mai 2005 à 10:37
Dutrou Messages postés 7 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mai 2005 - 16 mai 2005 à 11:02
Bonjour à tous,

J'ai commencé VBA il y a quelques jours donc soyez indulgents ^^.

Voici mon problème :

J'ai toute une batterie de classeurs excel normalisés. Dans tous ces fichiers, je dois tester la présence ou non de valeurs dans 4 cellules différentes puis, si une des valeurs est présente, je dois incrémenter un compteur associé (il y a un compteur pour chaque valeur soit 4 compteurs).

Voici comment je procède :
- je mets tous mes classeurs à tester dans un même dossier,
- je parcours ce dossier et recopie le nom de chaque classeur dans un autre classeur (celui à partir duquel est lancée ma macro),
- ensuite j'ouvre l'un après l'autre chaque classeur dont le nom est noté dans mon classeur actif,
- j'effectue mon traitement.

Voici où j'en suis :
- J'arrive à parcourir le dossier et à recopier les noms de chaque classeur dans mon classeur actif,
- Le problème, c'est que lorsque je souhaite ouvrir le classeur correspondant au nom qui est en train d'être lu, j'obtiens une erreur 1004.

Ma question est donc la suivante :
Si j'exécute une macro depuis un classeur, comment aller tester la valeur d'une cellule située dans un autre classeur ?

Pour exemple, voici la portion de code problématique :

'On ouvre le fichier dont le nom est inscrit dans la cellule (2, col)
Workbooks.Open chemin & "" & ThisWorkbook.Sheets("fichiers").Cells(2, col)

'On teste la valeur de la cellule D68 de ce fichier (mon problème est là, je ne sais pas quel commande employer puisque le classeur est ouvert mais ce n'est pas le classeur actif)
If Range("D68").Value <> "" Then

'Si la valeur est <> de "" alors on incrémente un compteur dans le classeur depuis lequel est exécutée la macro
ThisWorkbook.Sheets("resultat").Cells(2, 1) = ThisWorkbook.Sheets("resultat").Cells(2, 1) + 1

Merci d'avance de votre aide

6 réponses

Dutrou Messages postés 7 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 10:42
AAh !

C'est quoi cette présentation ? Il faut écrire en HTML ? Je corrige :

Bonjour à tous,J'ai commencé VBA il y a quelques jours donc soyez indulgents ^^.

Voici mon problème :
J'ai toute une batterie de classeurs excel normalisés. Dans tous ces fichiers, je dois tester la présence ou non de valeurs dans 4 cellules différentes puis, si une des valeurs est présente, je dois incrémenter un compteur associé (il y a un compteur pour chaque valeur soit 4 compteurs).

Voici comment je procède :
- je mets tous mes classeurs à tester dans un même dossier,
- je parcours ce dossier et recopie le nom de chaque classeur dans un autre classeur (celui à partir duquel est lancée ma macro),
- ensuite j'ouvre l'un après l'autre chaque classeur dont le nom est noté dans mon classeur actif,
- j'effectue mon traitement.

Voici où j'en suis :
- J'arrive à parcourir le dossier et à recopier les noms de chaque classeur dans mon classeur actif,
- Le problème, c'est que lorsque je souhaite ouvrir le classeur correspondant au nom qui est en train d'être lu, j'obtiens une erreur 1004.
Ma question est donc la suivante :Si j'exécute une macro depuis un classeur, comment aller tester la valeur d'une cellule située dans un autre classeur ?

Pour exemple, voici la portion de code problématique :

'On ouvre le fichier dont le nom est inscrit dans la cellule (2, col)Workbooks.Open chemin & "" & ThisWorkbook.Sheets("fichiers").Cells(2, col)
'On teste la valeur de la cellule D68 de ce fichier (mon problème est là, je ne sais pas quel commande employer puisque le classeur est ouvert mais ce n'est pas le classeur actif)
If Range("D68").Value <> "" Then
'Si la valeur est <> de "" alors on incrémente un compteur dans le classeur depuis lequel est exécutée la macro
ThisWorkbook.Sheets("resultat").Cells(2, 1) = ThisWorkbook.Sheets("resultat").Cells(2, 1) + 1Merci d'avance de votre aide
0
Dutrou Messages postés 7 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 10:43
AAh !

C'est quoi cette présentation ? Il faut écrire en HTML ? Je corrige :

Bonjour à tous,J'ai commencé VBA il y a quelques jours donc soyez indulgents ^^.

Voici mon problème :
J'ai toute une batterie de classeurs excel normalisés. Dans tous ces fichiers, je dois tester la présence ou non de valeurs dans 4 cellules différentes puis, si une des valeurs est présente, je dois incrémenter un compteur associé (il y a un compteur pour chaque valeur soit 4 compteurs).

Voici comment je procède :
- je mets tous mes classeurs à tester dans un même dossier,
- je parcours ce dossier et recopie le nom de chaque classeur dans un autre classeur (celui à partir duquel est lancée ma macro),
- ensuite j'ouvre l'un après l'autre chaque classeur dont le nom est noté dans mon classeur actif,
- j'effectue mon traitement.

Voici où j'en suis :
- J'arrive à parcourir le dossier et à recopier les noms de chaque classeur dans mon classeur actif,
- Le problème, c'est que lorsque je souhaite ouvrir le classeur correspondant au nom qui est en train d'être lu, j'obtiens une erreur 1004.
Ma question est donc la suivante :Si j'exécute une macro depuis un classeur, comment aller tester la valeur d'une cellule située dans un autre classeur ?

Pour exemple, voici la portion de code problématique :

'On ouvre le fichier dont le nom est inscrit dans la cellule (2, col)Workbooks.Open chemin & "" & ThisWorkbook.Sheets("fichiers").Cells(2, col)
'On teste la valeur de la cellule D68 de ce fichier (mon problème est là, je ne sais pas quel commande employer puisque le classeur est ouvert mais ce n'est pas le classeur actif)
If Range("D68").Value <> "" Then
'Si la valeur est <> de "" alors on incrémente un compteur dans le classeur depuis lequel est exécutée la macro
ThisWorkbook.Sheets("resultat").Cells(2, 1) = ThisWorkbook.Sheets("resultat").Cells(2, 1) + 1Merci d'avance de votre aide
0
Dutrou Messages postés 7 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 10:43
AAh !

C'est quoi cette présentation ? Il faut écrire en HTML ? Je corrige :

Bonjour à tous,J'ai commencé VBA il y a quelques jours donc soyez indulgents ^^.

Voici mon problème :
J'ai toute une batterie de classeurs excel normalisés. Dans tous ces fichiers, je dois tester la présence ou non de valeurs dans 4 cellules différentes puis, si une des valeurs est présente, je dois incrémenter un compteur associé (il y a un compteur pour chaque valeur soit 4 compteurs).

Voici comment je procède :
- je mets tous mes classeurs à tester dans un même dossier,
- je parcours ce dossier et recopie le nom de chaque classeur dans un autre classeur (celui à partir duquel est lancée ma macro),
- ensuite j'ouvre l'un après l'autre chaque classeur dont le nom est noté dans mon classeur actif,
- j'effectue mon traitement.

Voici où j'en suis :
- J'arrive à parcourir le dossier et à recopier les noms de chaque classeur dans mon classeur actif,
- Le problème, c'est que lorsque je souhaite ouvrir le classeur correspondant au nom qui est en train d'être lu, j'obtiens une erreur 1004.
Ma question est donc la suivante :Si j'exécute une macro depuis un classeur, comment aller tester la valeur d'une cellule située dans un autre classeur ?

Pour exemple, voici la portion de code problématique :

'On ouvre le fichier dont le nom est inscrit dans la cellule (2, col)Workbooks.Open chemin & "" & ThisWorkbook.Sheets("fichiers").Cells(2, col)
'On teste la valeur de la cellule D68 de ce fichier (mon problème est là, je ne sais pas quel commande employer puisque le classeur est ouvert mais ce n'est pas le classeur actif)
If Range("D68").Value <> "" Then
'Si la valeur est <> de "" alors on incrémente un compteur dans le classeur depuis lequel est exécutée la macro
ThisWorkbook.Sheets("resultat").Cells(2, 1) = ThisWorkbook.Sheets("resultat").Cells(2, 1) + 1Merci d'avance de votre aide
0
Dutrou Messages postés 7 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 10:43
AAh !

C'est quoi cette présentation ? Il faut écrire en HTML ? Je corrige :

Bonjour à tous,J'ai commencé VBA il y a quelques jours donc soyez indulgents ^^.

Voici mon problème :
J'ai toute une batterie de classeurs excel normalisés. Dans tous ces fichiers, je dois tester la présence ou non de valeurs dans 4 cellules différentes puis, si une des valeurs est présente, je dois incrémenter un compteur associé (il y a un compteur pour chaque valeur soit 4 compteurs).

Voici comment je procède :
- je mets tous mes classeurs à tester dans un même dossier,
- je parcours ce dossier et recopie le nom de chaque classeur dans un autre classeur (celui à partir duquel est lancée ma macro),
- ensuite j'ouvre l'un après l'autre chaque classeur dont le nom est noté dans mon classeur actif,
- j'effectue mon traitement.

Voici où j'en suis :
- J'arrive à parcourir le dossier et à recopier les noms de chaque classeur dans mon classeur actif,
- Le problème, c'est que lorsque je souhaite ouvrir le classeur correspondant au nom qui est en train d'être lu, j'obtiens une erreur 1004.
Ma question est donc la suivante :Si j'exécute une macro depuis un classeur, comment aller tester la valeur d'une cellule située dans un autre classeur ?

Pour exemple, voici la portion de code problématique :

'On ouvre le fichier dont le nom est inscrit dans la cellule (2, col)Workbooks.Open chemin & "" & ThisWorkbook.Sheets("fichiers").Cells(2, col)
'On teste la valeur de la cellule D68 de ce fichier (mon problème est là, je ne sais pas quel commande employer puisque le classeur est ouvert mais ce n'est pas le classeur actif)
If Range("D68").Value <> "" Then
'Si la valeur est <> de "" alors on incrémente un compteur dans le classeur depuis lequel est exécutée la macro
ThisWorkbook.Sheets("resultat").Cells(2, 1) = ThisWorkbook.Sheets("resultat").Cells(2, 1) + 1Merci d'avance de votre aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dutrou Messages postés 7 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 10:45
AAh !

C'est quoi cette présentation ? Il faut écrire en HTML ? Je corrige :

Bonjour à tous,J'ai commencé VBA il y a quelques jours donc soyez indulgents ^^.

Voici mon problème :
J'ai toute une batterie de classeurs excel normalisés. Dans tous ces fichiers, je dois tester la présence ou non de valeurs dans 4 cellules différentes puis, si une des valeurs est présente, je dois incrémenter un compteur associé (il y a un compteur pour chaque valeur soit 4 compteurs).

Voici comment je procède :
- je mets tous mes classeurs à tester dans un même dossier,
- je parcours ce dossier et recopie le nom de chaque classeur dans un autre classeur (celui à partir duquel est lancée ma macro),
- ensuite j'ouvre l'un après l'autre chaque classeur dont le nom est noté dans mon classeur actif,
- j'effectue mon traitement.

Voici où j'en suis :
- J'arrive à parcourir le dossier et à recopier les noms de chaque classeur dans mon classeur actif,
- Le problème, c'est que lorsque je souhaite ouvrir le classeur correspondant au nom qui est en train d'être lu, j'obtiens une erreur 1004.
Ma question est donc la suivante :Si j'exécute une macro depuis un classeur, comment aller tester la valeur d'une cellule située dans un autre classeur ?

Pour exemple, voici la portion de code problématique :

'On ouvre le fichier dont le nom est inscrit dans la cellule (2, col)Workbooks.Open chemin & "" & ThisWorkbook.Sheets("fichiers").Cells(2, col)
'On teste la valeur de la cellule D68 de ce fichier (mon problème est là, je ne sais pas quel commande employer puisque le classeur est ouvert mais ce n'est pas le classeur actif)
If Range("D68").Value <> "" Then
'Si la valeur est <> de "" alors on incrémente un compteur dans le classeur depuis lequel est exécutée la macro
ThisWorkbook.Sheets("resultat").Cells(2, 1) = ThisWorkbook.Sheets("resultat").Cells(2, 1) + 1Merci d'avance de votre aide
0
Dutrou Messages postés 7 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 11:02
Bon, je suis vraiment désolé, si un modérateur passait par là pour corriger mes bêtises, je le remercie d'avance. Ma connexion rame comme pas possible alors j'ai cliqué plusieurs fois sur "ajouter" parce que j'en avais marre d'attendre.
Si quelqu'un pouvait également me dire pourquoi mon texte est tout collé, ce serait sympa.
Encore désolé de "pourrir" le forum mais c'est vraiment involontaire.
0
Rejoignez-nous