passer d'une feuille a une autre dans une macro: ca marche pas, argh...
2 réponses
pierre-yves.guernier
bonjour tout le monde,
ici c'est la lutte permanente avec visual basic (je découvre ce
langage et pour l'instant c'est
lui qui gagne...).
J'ai écrit une macro qui travaille sur deux fichiers a la fois et qui
dois travailler sur les deux pages d'un des
deux fichiers.
J'ai deux questions qui m'intriguent.
question 1:
Je ne sais pas pourquoi, mais je n'arrive pas a activer les
différentes feuilles d'un meme fichier.
Workbooks("Correspondance table 15.03.05.xls").Activate
.......
dans cette zone je travaille sur la sheet1
...
Sheets("Sheet2").Activate
Range("A1").End(xlDown).Select
ActiveCell.Offset(1, 0).Value = "probleme" je désire écrire
sur la dernière ligne de la colonne A1
Sheets("Sheet1").Select je dois retourner
sur la sheet1
quand je fais ceci, la sheet2 n'est de tout évidence pas actvée ou
alors elle l'est de manière aléatoire.
J'ai essayer avec Sheets("Sheet2").Select a la place de activate mais
je ne vois jamais les feuilles apparaitre a l'écran
l'una apres l'autre et en faisant plusieurs test j'abouti a l'idée que
je ne comprends pas.
question 2:
Cette ligne de code n'est pas appréciée et pourtant elle est générée
toute seule lorsque je procède par un enregistrement.
En fait je veux que le contenu d'une cellule dépende du résultat d'un
If mais losque le If est true, je veux prendre la valeur d'une cellule
se trouvant dans un autre fichier
ActiveCell.FormulaR1C1 = "=IF(Z_Result_test=""ok"",'[Correspondance
table 15.03.05.xls]OCH'!R357C3,""pas a jour"")"'
merci pour votre aide qui je n'en doute pas sera précieuse!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anonymousA
bonjour,
pour la 1ere question, on résoud le problème en évitant les select ou les activate. Select et activate sont d'ailleurs 2 choses différentes.on peut d'ailleurs travailler directement depuis l'autre fichier
'on suppose ici que la cellule A1 est déjà remplie, sinon la 1ere copie aura lieu en A2.
with Workbooks("Correspondance table 15.03.05.xls").sheets("Sheet1") lastemptyrowsheet1=.range("A65536").end(xlup).row+1 .cells(lastemptyrowsheet1,1).value="problème" end with
POur la 2eme question, je ne vois à priori pas d'erreur fondamentale mais ne connaissant pas le contexte ? Z_Result_test est une plage nommée, non ? Dis en plus eventuellement pour mieux comprendre ton problème
A+
bonjour tout le monde, ici c'est la lutte permanente avec visual basic (je découvre ce langage et pour l'instant c'est lui qui gagne...). J'ai écrit une macro qui travaille sur deux fichiers a la fois et qui dois travailler sur les deux pages d'un des deux fichiers.
J'ai deux questions qui m'intriguent.
question 1: Je ne sais pas pourquoi, mais je n'arrive pas a activer les différentes feuilles d'un meme fichier.
Workbooks("Correspondance table 15.03.05.xls").Activate ....... dans cette zone je travaille sur la sheet1 ... Sheets("Sheet2").Activate Range("A1").End(xlDown).Select ActiveCell.Offset(1, 0).Value = "probleme" je désire écrire sur la dernière ligne de la colonne A1 Sheets("Sheet1").Select je dois retourner sur la sheet1
quand je fais ceci, la sheet2 n'est de tout évidence pas actvée ou alors elle l'est de manière aléatoire. J'ai essayer avec Sheets("Sheet2").Select a la place de activate mais je ne vois jamais les feuilles apparaitre a l'écran l'una apres l'autre et en faisant plusieurs test j'abouti a l'idée que je ne comprends pas.
question 2: Cette ligne de code n'est pas appréciée et pourtant elle est générée toute seule lorsque je procède par un enregistrement. En fait je veux que le contenu d'une cellule dépende du résultat d'un If mais losque le If est true, je veux prendre la valeur d'une cellule se trouvant dans un autre fichier
ActiveCell.FormulaR1C1 = "=IF(Z_Result_test=""ok"",'[Correspondance table 15.03.05.xls]OCH'!R357C3,""pas a jour"")"'
merci pour votre aide qui je n'en doute pas sera précieuse!
Et a bientot
bonjour,
pour la 1ere question, on résoud le problème en évitant les select ou les
activate. Select et activate sont d'ailleurs 2 choses différentes.on peut
d'ailleurs travailler directement depuis l'autre fichier
'on suppose ici que la cellule A1 est déjà remplie, sinon la 1ere copie
aura lieu en A2.
with Workbooks("Correspondance table 15.03.05.xls").sheets("Sheet1")
lastemptyrowsheet1=.range("A65536").end(xlup).row+1
.cells(lastemptyrowsheet1,1).value="problème"
end with
POur la 2eme question, je ne vois à priori pas d'erreur fondamentale mais ne
connaissant pas le contexte ?
Z_Result_test est une plage nommée, non ? Dis en plus eventuellement pour
mieux comprendre ton problème
A+
bonjour tout le monde,
ici c'est la lutte permanente avec visual basic (je découvre ce
langage et pour l'instant c'est
lui qui gagne...).
J'ai écrit une macro qui travaille sur deux fichiers a la fois et qui
dois travailler sur les deux pages d'un des
deux fichiers.
J'ai deux questions qui m'intriguent.
question 1:
Je ne sais pas pourquoi, mais je n'arrive pas a activer les
différentes feuilles d'un meme fichier.
Workbooks("Correspondance table 15.03.05.xls").Activate
.......
dans cette zone je travaille sur la sheet1
...
Sheets("Sheet2").Activate
Range("A1").End(xlDown).Select
ActiveCell.Offset(1, 0).Value = "probleme" je désire écrire
sur la dernière ligne de la colonne A1
Sheets("Sheet1").Select je dois retourner
sur la sheet1
quand je fais ceci, la sheet2 n'est de tout évidence pas actvée ou
alors elle l'est de manière aléatoire.
J'ai essayer avec Sheets("Sheet2").Select a la place de activate mais
je ne vois jamais les feuilles apparaitre a l'écran
l'una apres l'autre et en faisant plusieurs test j'abouti a l'idée que
je ne comprends pas.
question 2:
Cette ligne de code n'est pas appréciée et pourtant elle est générée
toute seule lorsque je procède par un enregistrement.
En fait je veux que le contenu d'une cellule dépende du résultat d'un
If mais losque le If est true, je veux prendre la valeur d'une cellule
se trouvant dans un autre fichier
ActiveCell.FormulaR1C1 = "=IF(Z_Result_test=""ok"",'[Correspondance
table 15.03.05.xls]OCH'!R357C3,""pas a jour"")"'
merci pour votre aide qui je n'en doute pas sera précieuse!
pour la 1ere question, on résoud le problème en évitant les select ou les activate. Select et activate sont d'ailleurs 2 choses différentes.on peut d'ailleurs travailler directement depuis l'autre fichier
'on suppose ici que la cellule A1 est déjà remplie, sinon la 1ere copie aura lieu en A2.
with Workbooks("Correspondance table 15.03.05.xls").sheets("Sheet1") lastemptyrowsheet1=.range("A65536").end(xlup).row+1 .cells(lastemptyrowsheet1,1).value="problème" end with
POur la 2eme question, je ne vois à priori pas d'erreur fondamentale mais ne connaissant pas le contexte ? Z_Result_test est une plage nommée, non ? Dis en plus eventuellement pour mieux comprendre ton problème
A+
bonjour tout le monde, ici c'est la lutte permanente avec visual basic (je découvre ce langage et pour l'instant c'est lui qui gagne...). J'ai écrit une macro qui travaille sur deux fichiers a la fois et qui dois travailler sur les deux pages d'un des deux fichiers.
J'ai deux questions qui m'intriguent.
question 1: Je ne sais pas pourquoi, mais je n'arrive pas a activer les différentes feuilles d'un meme fichier.
Workbooks("Correspondance table 15.03.05.xls").Activate ....... dans cette zone je travaille sur la sheet1 ... Sheets("Sheet2").Activate Range("A1").End(xlDown).Select ActiveCell.Offset(1, 0).Value = "probleme" je désire écrire sur la dernière ligne de la colonne A1 Sheets("Sheet1").Select je dois retourner sur la sheet1
quand je fais ceci, la sheet2 n'est de tout évidence pas actvée ou alors elle l'est de manière aléatoire. J'ai essayer avec Sheets("Sheet2").Select a la place de activate mais je ne vois jamais les feuilles apparaitre a l'écran l'una apres l'autre et en faisant plusieurs test j'abouti a l'idée que je ne comprends pas.
question 2: Cette ligne de code n'est pas appréciée et pourtant elle est générée toute seule lorsque je procède par un enregistrement. En fait je veux que le contenu d'une cellule dépende du résultat d'un If mais losque le If est true, je veux prendre la valeur d'une cellule se trouvant dans un autre fichier
ActiveCell.FormulaR1C1 = "=IF(Z_Result_test=""ok"",'[Correspondance table 15.03.05.xls]OCH'!R357C3,""pas a jour"")"'
merci pour votre aide qui je n'en doute pas sera précieuse!
Et a bientot
pierre-yves.guernier
bonjour,
pour la 1ere question, on résoud le problème en évitant les select ou les activate. Select et activate sont d'ailleurs 2 choses différentes.on peut d'ailleurs travailler directement depuis l'autre fichier
'on suppose ici que la cellule A1 est déjà remplie, sinon la 1ere copie aura lieu en A2.
with Workbooks("Correspondance table 15.03.05.xls").sheets("Sheet1") lastemptyrowsheet1=.range("A65536").end(xlup).row+1 .cells(lastemptyrowsheet1,1).value="problème" end with
POur la 2eme question, je ne vois à priori pas d'erreur fondamentale mais ne connaissant pas le contexte ? Z_Result_test est une plage nommée, non ? Dis en plus eventuellement pour mieux comprendre ton problème
A+
Merci beaucoup pour tes réponses. Cela marche tres bien pour la question 1, si ce n'est que je ne comprends pas le code...
lastemptyrowsheet1=.range("A65536").end(xlup).row+1=> ca jai compris, si ce n'est que je me demande comment lastemptyrowsheet1 va contenir l'adresse de la première cellule vide de la colonne A (si c'est le cas) sans utilisé .Adress .cells(lastemptyrowsheet1,1).value="problème pourquoi doit on mettre lastemptyrowsheet1,1
Merci pour ses informations qui me permettrons de mieux comprendre les subtilités de visual.
pour la deuxième question:
ActiveCell.FormulaR1C1 = "=IF(Z_Result_test=""ok"",'[Correspondance table 15.03.05.xls]OCH'!R357C3,""pas a jour"")"'
Z_Result_test est déclaré comme string. en fait pour t'expliquer le contesxte, je dois comparer 2 Tab, 1 est le tab de référence et l'autre est le tab que je dois tester. le Z_Result_test me permet de savoir si je compare bien les meme lignes,si Z_Result_test vaut Ok, je dois remplacer le contenu d'une cellule par le contenu d'une autre. ici je veux remplacer le contenu de la cellule active par le contenu de la cellule Correspondance table 15.03.05.xls]OCH'!R357C3 uniquement si Z-result_test vaut ok. Si ca t'aide a comprendre t'es vachement fort!
en tous les cas merci beaucoup pour ton aide.
actuellement j'ai réussi a contourner ce problème par contre je n'arrive pas a contourner un autre problème:
a savoir:
Je désire copier les éléments se trouvant dans les cellules se trouvant en bas d'un tableau. j'utilise ces deux lignes de codes: Range("Q1:BL1").End(xlDown).Select Selection.Copy
mais la première ligne n'est pas acceptée, vu que j'utilise un filtre, je connais pas l'adresse de la dernière ligne. Je peux la connaitre et la mettre dans une variable mais Range("Q":"BL" & ActiveCellRow).End(xlDown).Select ne marche pas non plus.. si quelqu'un peut m'aider ce serait super cool! merci
bonjour,
pour la 1ere question, on résoud le problème en évitant les select ou
les
activate. Select et activate sont d'ailleurs 2 choses différentes.on
peut
d'ailleurs travailler directement depuis l'autre fichier
'on suppose ici que la cellule A1 est déjà remplie, sinon la 1ere
copie
aura lieu en A2.
with Workbooks("Correspondance table 15.03.05.xls").sheets("Sheet1")
lastemptyrowsheet1=.range("A65536").end(xlup).row+1
.cells(lastemptyrowsheet1,1).value="problème"
end with
POur la 2eme question, je ne vois à priori pas d'erreur fondamentale
mais ne
connaissant pas le contexte ?
Z_Result_test est une plage nommée, non ? Dis en plus eventuellement
pour
mieux comprendre ton problème
A+
Merci beaucoup pour tes réponses.
Cela marche tres bien pour la question 1, si ce n'est que je ne
comprends pas le code...
lastemptyrowsheet1=.range("A65536").end(xlup).row+1=> ca jai compris,
si ce n'est que je me demande comment
lastemptyrowsheet1 va contenir l'adresse de la première cellule vide
de la colonne A (si c'est le cas) sans utilisé .Adress
.cells(lastemptyrowsheet1,1).value="problème
pourquoi doit on mettre lastemptyrowsheet1,1
Merci pour ses informations qui me permettrons de mieux comprendre les
subtilités de visual.
pour la deuxième question:
ActiveCell.FormulaR1C1 = "=IF(Z_Result_test=""ok"",'[Correspondance
table 15.03.05.xls]OCH'!R357C3,""pas a jour"")"'
Z_Result_test est déclaré comme string.
en fait pour t'expliquer le contesxte, je dois comparer 2 Tab, 1 est
le tab de référence et l'autre est le tab que je dois tester.
le Z_Result_test me permet de savoir si je compare bien les meme
lignes,si Z_Result_test vaut Ok, je dois remplacer le contenu
d'une cellule par le contenu d'une autre.
ici je veux remplacer le contenu de la cellule active par le contenu
de la cellule Correspondance table 15.03.05.xls]OCH'!R357C3
uniquement si Z-result_test vaut ok.
Si ca t'aide a comprendre t'es vachement fort!
en tous les cas merci beaucoup pour ton aide.
actuellement j'ai réussi a contourner ce problème par contre je
n'arrive pas a contourner un autre problème:
a savoir:
Je désire copier les éléments se trouvant dans les cellules se
trouvant en bas d'un tableau.
j'utilise ces deux lignes de codes:
Range("Q1:BL1").End(xlDown).Select
Selection.Copy
mais la première ligne n'est pas acceptée, vu que j'utilise un filtre,
je connais pas l'adresse de la dernière ligne. Je peux la connaitre et
la mettre dans une variable mais
Range("Q":"BL" & ActiveCellRow).End(xlDown).Select ne marche pas non
plus..
si quelqu'un peut m'aider ce serait super cool!
merci
pour la 1ere question, on résoud le problème en évitant les select ou les activate. Select et activate sont d'ailleurs 2 choses différentes.on peut d'ailleurs travailler directement depuis l'autre fichier
'on suppose ici que la cellule A1 est déjà remplie, sinon la 1ere copie aura lieu en A2.
with Workbooks("Correspondance table 15.03.05.xls").sheets("Sheet1") lastemptyrowsheet1=.range("A65536").end(xlup).row+1 .cells(lastemptyrowsheet1,1).value="problème" end with
POur la 2eme question, je ne vois à priori pas d'erreur fondamentale mais ne connaissant pas le contexte ? Z_Result_test est une plage nommée, non ? Dis en plus eventuellement pour mieux comprendre ton problème
A+
Merci beaucoup pour tes réponses. Cela marche tres bien pour la question 1, si ce n'est que je ne comprends pas le code...
lastemptyrowsheet1=.range("A65536").end(xlup).row+1=> ca jai compris, si ce n'est que je me demande comment lastemptyrowsheet1 va contenir l'adresse de la première cellule vide de la colonne A (si c'est le cas) sans utilisé .Adress .cells(lastemptyrowsheet1,1).value="problème pourquoi doit on mettre lastemptyrowsheet1,1
Merci pour ses informations qui me permettrons de mieux comprendre les subtilités de visual.
pour la deuxième question:
ActiveCell.FormulaR1C1 = "=IF(Z_Result_test=""ok"",'[Correspondance table 15.03.05.xls]OCH'!R357C3,""pas a jour"")"'
Z_Result_test est déclaré comme string. en fait pour t'expliquer le contesxte, je dois comparer 2 Tab, 1 est le tab de référence et l'autre est le tab que je dois tester. le Z_Result_test me permet de savoir si je compare bien les meme lignes,si Z_Result_test vaut Ok, je dois remplacer le contenu d'une cellule par le contenu d'une autre. ici je veux remplacer le contenu de la cellule active par le contenu de la cellule Correspondance table 15.03.05.xls]OCH'!R357C3 uniquement si Z-result_test vaut ok. Si ca t'aide a comprendre t'es vachement fort!
en tous les cas merci beaucoup pour ton aide.
actuellement j'ai réussi a contourner ce problème par contre je n'arrive pas a contourner un autre problème:
a savoir:
Je désire copier les éléments se trouvant dans les cellules se trouvant en bas d'un tableau. j'utilise ces deux lignes de codes: Range("Q1:BL1").End(xlDown).Select Selection.Copy
mais la première ligne n'est pas acceptée, vu que j'utilise un filtre, je connais pas l'adresse de la dernière ligne. Je peux la connaitre et la mettre dans une variable mais Range("Q":"BL" & ActiveCellRow).End(xlDown).Select ne marche pas non plus.. si quelqu'un peut m'aider ce serait super cool! merci