Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modification d'une liaison par liste déroulante

6 réponses
Avatar
LuckyGuy
Bonsoir à vous tous

J'aimerai vous poser une question sur la mise à jour d'une liaison entre 2
classeurs, grâce à une liste déroulante.

Le classeur source contient 12 feuilles, nommées de janvier à décembre - et
alimente avec des liaisons une feuille unique du second classeur.
Dans celui-ci, j'aimerai qu'à l'aide d'une liste déroulante, l'utilisateur
puisse choisir un mois (de janvier à décembre) et que cette sélection
modifie le mois dans la formule de la liaison.
Exemple: Si je choisis octobre dans la liste déroulante du classeur cible,
ce sont les chiffres d'octobre qui seront rapatriés du classeur source.
Les données sont en colonnes dans un tableau mise en forme (sous totaux,
totaux).

Pensez-vous que ce soit possible? avec une formule conditionnelle? une
macro?

Rechercher/remplacer fonctionne très bien, mais je souhaiterai gagner en
souplesse et en convivialité.

Je vous remercie de votre aide

Guy

6 réponses

Avatar
michdenis
Bonjour LuckyGuy,

Utilise la commande Rechercher-Remplacer du menu édition.

Tu dois prendre soin de définir l'option suivante :
Regarder dans : Formules
Ne pas cocher l'option : Totalité du contenu de la cellule.
Dans : Feuille.

Si tu utlises l'enregistreur de macro durant le processus, il devrait te donner la presque totalité du code. Au besoin, fais signe.


Salutations!




"LuckyGuy" a écrit dans le message de news: %
Bonsoir à vous tous

J'aimerai vous poser une question sur la mise à jour d'une liaison entre 2
classeurs, grâce à une liste déroulante.

Le classeur source contient 12 feuilles, nommées de janvier à décembre - et
alimente avec des liaisons une feuille unique du second classeur.
Dans celui-ci, j'aimerai qu'à l'aide d'une liste déroulante, l'utilisateur
puisse choisir un mois (de janvier à décembre) et que cette sélection
modifie le mois dans la formule de la liaison.
Exemple: Si je choisis octobre dans la liste déroulante du classeur cible,
ce sont les chiffres d'octobre qui seront rapatriés du classeur source.
Les données sont en colonnes dans un tableau mise en forme (sous totaux,
totaux).

Pensez-vous que ce soit possible? avec une formule conditionnelle? une
macro?

Rechercher/remplacer fonctionne très bien, mais je souhaiterai gagner en
souplesse et en convivialité.

Je vous remercie de votre aide

Guy
Avatar
LuckyGuy
Bonsoir michdenis

Je te remercie pour ta réponse.

En effet l'enregistreur remplit bien son rôle pour un remplacement ponctuel:

Sub RemplaceMois()
Range("B:C,J:K").Select
Selection.Replace What:="septembre", Replacement:="octobre"
End Sub

Mais je souhaiterais néanmoins quelquechose de plus "souple" pour
l'utilisateur.
Dans la procédure ci-dessus les mois sont figés, alors qu'il faudrait
pouvoir choisir le mois à rapatrier dans les formules de liaison.
Littéralement celà donnerait ceci:
Si un mois "M" est sélectionné grâce à une liste contenant janvier à
décembre dans le classeur cible, alors les formules en liaison avec le
classeur source prennent aussi la valeur "M".
A l'heure actuelle la formule est la suivante:
=[ClasseurSource.xls]FeuilleSeptembre'!ColonneB_NuméroLigne

Qu'en penses-tu?

Merci

Guy






"michdenis" a écrit dans le message de news:

Bonjour LuckyGuy,

Utilise la commande Rechercher-Remplacer du menu édition.

Tu dois prendre soin de définir l'option suivante :
Regarder dans : Formules
Ne pas cocher l'option : Totalité du contenu de la cellule.
Dans : Feuille.

Si tu utlises l'enregistreur de macro durant le processus, il devrait te
donner la presque totalité du code. Au besoin, fais signe.


Salutations!




"LuckyGuy" a écrit dans le message de news:
%
Bonsoir à vous tous

J'aimerai vous poser une question sur la mise à jour d'une liaison entre 2
classeurs, grâce à une liste déroulante.

Le classeur source contient 12 feuilles, nommées de janvier à décembre -
et
alimente avec des liaisons une feuille unique du second classeur.
Dans celui-ci, j'aimerai qu'à l'aide d'une liste déroulante, l'utilisateur
puisse choisir un mois (de janvier à décembre) et que cette sélection
modifie le mois dans la formule de la liaison.
Exemple: Si je choisis octobre dans la liste déroulante du classeur cible,
ce sont les chiffres d'octobre qui seront rapatriés du classeur source.
Les données sont en colonnes dans un tableau mise en forme (sous totaux,
totaux).

Pensez-vous que ce soit possible? avec une formule conditionnelle? une
macro?

Rechercher/remplacer fonctionne très bien, mais je souhaiterai gagner en
souplesse et en convivialité.

Je vous remercie de votre aide

Guy





Avatar
SL
Bonjour
essaie
=INDIRECT("'[ClasseurSource.xls]Feuille"&A1&"'!$B$8")
avec en A1 ton mois (issue de la liste de validation)

si le classeur source est fermé, regarder par exemple du coté de
INDIRECT.EXT chez Laurent Longre (http://xcell05.free.fr/)

Stéphane

"LuckyGuy" a écrit dans le message de news:

Bonsoir michdenis

Je te remercie pour ta réponse.

En effet l'enregistreur remplit bien son rôle pour un remplacement
ponctuel:

Sub RemplaceMois()
Range("B:C,J:K").Select
Selection.Replace What:="septembre", Replacement:="octobre"
End Sub

Mais je souhaiterais néanmoins quelquechose de plus "souple" pour
l'utilisateur.
Dans la procédure ci-dessus les mois sont figés, alors qu'il faudrait
pouvoir choisir le mois à rapatrier dans les formules de liaison.
Littéralement celà donnerait ceci:
Si un mois "M" est sélectionné grâce à une liste contenant janvier à
décembre dans le classeur cible, alors les formules en liaison avec le
classeur source prennent aussi la valeur "M".
A l'heure actuelle la formule est la suivante:
=[ClasseurSource.xls]FeuilleSeptembre'!ColonneB_NuméroLigne

Qu'en penses-tu?

Merci

Guy






"michdenis" a écrit dans le message de news:

Bonjour LuckyGuy,

Utilise la commande Rechercher-Remplacer du menu édition.

Tu dois prendre soin de définir l'option suivante :
Regarder dans : Formules
Ne pas cocher l'option : Totalité du contenu de la cellule.
Dans : Feuille.

Si tu utlises l'enregistreur de macro durant le processus, il devrait te
donner la presque totalité du code. Au besoin, fais signe.


Salutations!




"LuckyGuy" a écrit dans le message de news:
%
Bonsoir à vous tous

J'aimerai vous poser une question sur la mise à jour d'une liaison entre
2
classeurs, grâce à une liste déroulante.

Le classeur source contient 12 feuilles, nommées de janvier à décembre -
et
alimente avec des liaisons une feuille unique du second classeur.
Dans celui-ci, j'aimerai qu'à l'aide d'une liste déroulante,
l'utilisateur
puisse choisir un mois (de janvier à décembre) et que cette sélection
modifie le mois dans la formule de la liaison.
Exemple: Si je choisis octobre dans la liste déroulante du classeur
cible,
ce sont les chiffres d'octobre qui seront rapatriés du classeur source.
Les données sont en colonnes dans un tableau mise en forme (sous totaux,
totaux).

Pensez-vous que ce soit possible? avec une formule conditionnelle? une
macro?

Rechercher/remplacer fonctionne très bien, mais je souhaiterai gagner en
souplesse et en convivialité.

Je vous remercie de votre aide

Guy









Avatar
LuckyGuy
Bonsoir Stéphane

Effectivement ta solution fonctionne lorsque le classeur source est ouvert.
Par contre j'ai du modifier la formule (empiriquement, après plusieurs
essais) ainsi:
=INDIRECT("'[ClasseurSource.xls]"&A1&"'!$B$8")
En supprimant Feuille donc, est-ce normal?
Et pour approfondir le sujet, à quoi servent tous ces guillemets, simples ou
doubles?
Il doit s'agir d'une concaténation.

Comme tu l'as bien compris, il serait plus simple pour l'utilisateur de ne
pas avoir à ouvrir le classeur source au préalable. Je suis donc allé sur le
site que tu m'as donné et j'essaierai INDIRECT.EXT dès que je peux au
bureau.

Sinon j'ai un peu "cafouillé" dans le choix du type de liste, laquelle me
recommandes-tu et comment la mettre en oeuvre?
Apparement je vais avoir un problème avec le format date.
Le choix d'un mois renvoit un format date en A1, et bien sur une erreur dans
la cellule liée ...

Même si ma question n'est pas réglé, les premiers resultats sont
encourageants et je te remercie pour ton aide avisée.

Je te tiens au courant de la suite de mes essais

Guy

"SL" a écrit dans le message de news:

Bonjour
essaie
=INDIRECT("'[ClasseurSource.xls]Feuille"&A1&"'!$B$8")
avec en A1 ton mois (issue de la liste de validation)

si le classeur source est fermé, regarder par exemple du coté de
INDIRECT.EXT chez Laurent Longre (http://xcell05.free.fr/)

Stéphane

"LuckyGuy" a écrit dans le message de news:

Bonsoir michdenis

Je te remercie pour ta réponse.

En effet l'enregistreur remplit bien son rôle pour un remplacement
ponctuel:

Sub RemplaceMois()
Range("B:C,J:K").Select
Selection.Replace What:="septembre", Replacement:="octobre"
End Sub

Mais je souhaiterais néanmoins quelquechose de plus "souple" pour
l'utilisateur.
Dans la procédure ci-dessus les mois sont figés, alors qu'il faudrait
pouvoir choisir le mois à rapatrier dans les formules de liaison.
Littéralement celà donnerait ceci:
Si un mois "M" est sélectionné grâce à une liste contenant janvier à
décembre dans le classeur cible, alors les formules en liaison avec le
classeur source prennent aussi la valeur "M".
A l'heure actuelle la formule est la suivante:
=[ClasseurSource.xls]FeuilleSeptembre'!ColonneB_NuméroLigne

Qu'en penses-tu?

Merci

Guy






"michdenis" a écrit dans le message de news:

Bonjour LuckyGuy,

Utilise la commande Rechercher-Remplacer du menu édition.

Tu dois prendre soin de définir l'option suivante :
Regarder dans : Formules
Ne pas cocher l'option : Totalité du contenu de la cellule.
Dans : Feuille.

Si tu utlises l'enregistreur de macro durant le processus, il devrait te
donner la presque totalité du code. Au besoin, fais signe.


Salutations!




"LuckyGuy" a écrit dans le message de news:
%
Bonsoir à vous tous

J'aimerai vous poser une question sur la mise à jour d'une liaison entre
2
classeurs, grâce à une liste déroulante.

Le classeur source contient 12 feuilles, nommées de janvier à décembre -
et
alimente avec des liaisons une feuille unique du second classeur.
Dans celui-ci, j'aimerai qu'à l'aide d'une liste déroulante,
l'utilisateur
puisse choisir un mois (de janvier à décembre) et que cette sélection
modifie le mois dans la formule de la liaison.
Exemple: Si je choisis octobre dans la liste déroulante du classeur
cible,
ce sont les chiffres d'octobre qui seront rapatriés du classeur source.
Les données sont en colonnes dans un tableau mise en forme (sous totaux,
totaux).

Pensez-vous que ce soit possible? avec une formule conditionnelle? une
macro?

Rechercher/remplacer fonctionne très bien, mais je souhaiterai gagner en
souplesse et en convivialité.

Je vous remercie de votre aide

Guy













Avatar
SL
Bonjour

En supprimant Feuille donc, est-ce normal?
lors d'un précédent message du disait que ta syntaxe était :

=[ClasseurSource.xls]FeuilleSeptembre'!ColonneB_NuméroLigne
FeuilleSeptembre (et non Septembre tout court !)


Il doit s'agir d'une concaténation.
C'est en effet une concaténation

="ABC"&A1&"123" renverra "ABCtest123" si A1 contient "test"
les guillements ' font partie de la syntaxe
'[ClasseurSource.xls]NomFeuille'!AdresseCellule

Sinon j'ai un peu "cafouillé" dans le choix du type de liste, laquelle me
recommandes-tu et comment la mettre en oeuvre?
Apparement je vais avoir un problème avec le format date.
Le choix d'un mois renvoit un format date en A1, et bien sur une erreur
dans la cellule liée ...
Le mieux est une liste de validation (données/validation/liste)

si ta liste est : 01/01/05, 01/02/05, ... au format "mmmm" il y aura en
effet un problème.
il faut remplacer le A1 par TEXTE(A1;"mmmm") qui renverra janvier,
février...
=INDIRECT("'[ClasseurSource.xls]"&TEXTE(A1;"mmmm")&"'!$B$8")

ATTENTION aux accents (février, août...)

Stéphane




"LuckyGuy" a écrit dans le message de news:

Bonsoir Stéphane

Effectivement ta solution fonctionne lorsque le classeur source est
ouvert.
Par contre j'ai du modifier la formule (empiriquement, après plusieurs
essais) ainsi:
=INDIRECT("'[ClasseurSource.xls]"&A1&"'!$B$8")
En supprimant Feuille donc, est-ce normal?
Et pour approfondir le sujet, à quoi servent tous ces guillemets, simples
ou doubles?
Il doit s'agir d'une concaténation.

Comme tu l'as bien compris, il serait plus simple pour l'utilisateur de ne
pas avoir à ouvrir le classeur source au préalable. Je suis donc allé sur
le site que tu m'as donné et j'essaierai INDIRECT.EXT dès que je peux au
bureau.

Sinon j'ai un peu "cafouillé" dans le choix du type de liste, laquelle me
recommandes-tu et comment la mettre en oeuvre?
Apparement je vais avoir un problème avec le format date.
Le choix d'un mois renvoit un format date en A1, et bien sur une erreur
dans la cellule liée ...

Même si ma question n'est pas réglé, les premiers resultats sont
encourageants et je te remercie pour ton aide avisée.

Je te tiens au courant de la suite de mes essais

Guy

"SL" a écrit dans le message de news:

Bonjour
essaie
=INDIRECT("'[ClasseurSource.xls]Feuille"&A1&"'!$B$8")
avec en A1 ton mois (issue de la liste de validation)

si le classeur source est fermé, regarder par exemple du coté de
INDIRECT.EXT chez Laurent Longre (http://xcell05.free.fr/)

Stéphane

"LuckyGuy" a écrit dans le message de news:

Bonsoir michdenis

Je te remercie pour ta réponse.

En effet l'enregistreur remplit bien son rôle pour un remplacement
ponctuel:

Sub RemplaceMois()
Range("B:C,J:K").Select
Selection.Replace What:="septembre", Replacement:="octobre"
End Sub

Mais je souhaiterais néanmoins quelquechose de plus "souple" pour
l'utilisateur.
Dans la procédure ci-dessus les mois sont figés, alors qu'il faudrait
pouvoir choisir le mois à rapatrier dans les formules de liaison.
Littéralement celà donnerait ceci:
Si un mois "M" est sélectionné grâce à une liste contenant janvier à
décembre dans le classeur cible, alors les formules en liaison avec le
classeur source prennent aussi la valeur "M".
A l'heure actuelle la formule est la suivante:
=[ClasseurSource.xls]FeuilleSeptembre'!ColonneB_NuméroLigne

Qu'en penses-tu?

Merci

Guy






"michdenis" a écrit dans le message de news:

Bonjour LuckyGuy,

Utilise la commande Rechercher-Remplacer du menu édition.

Tu dois prendre soin de définir l'option suivante :
Regarder dans : Formules
Ne pas cocher l'option : Totalité du contenu de la cellule.
Dans : Feuille.

Si tu utlises l'enregistreur de macro durant le processus, il devrait
te donner la presque totalité du code. Au besoin, fais signe.


Salutations!




"LuckyGuy" a écrit dans le message de news:
%
Bonsoir à vous tous

J'aimerai vous poser une question sur la mise à jour d'une liaison
entre 2
classeurs, grâce à une liste déroulante.

Le classeur source contient 12 feuilles, nommées de janvier à
décembre - et
alimente avec des liaisons une feuille unique du second classeur.
Dans celui-ci, j'aimerai qu'à l'aide d'une liste déroulante,
l'utilisateur
puisse choisir un mois (de janvier à décembre) et que cette sélection
modifie le mois dans la formule de la liaison.
Exemple: Si je choisis octobre dans la liste déroulante du classeur
cible,
ce sont les chiffres d'octobre qui seront rapatriés du classeur source.
Les données sont en colonnes dans un tableau mise en forme (sous
totaux,
totaux).

Pensez-vous que ce soit possible? avec une formule conditionnelle? une
macro?

Rechercher/remplacer fonctionne très bien, mais je souhaiterai gagner
en
souplesse et en convivialité.

Je vous remercie de votre aide

Guy

















Avatar
LuckyGuy
Bonsoir Stéphane,

Merci beaucoup pour tes explications complémentaires, qui me permettent de
comprendre ce que je fais.

J'ai donc essayé la liste de validation et ca fonctionne très bien.

Il me reste à mettre en oeuvre la fonction INDIRECT.EXT (zip téléchargé).
Je suppose que je dois l'installer sur tous les postes utilisateurs
concernés.

Je te remercie à nouveau. Grâce à toi, j'espère pouvoir optimiser un travail
fastidieux et répétitif.

Bonne soirée,

Guy




"SL" a écrit dans le message de news:
%
Bonjour

En supprimant Feuille donc, est-ce normal?
lors d'un précédent message du disait que ta syntaxe était :

=[ClasseurSource.xls]FeuilleSeptembre'!ColonneB_NuméroLigne
FeuilleSeptembre (et non Septembre tout court !)


Il doit s'agir d'une concaténation.
C'est en effet une concaténation

="ABC"&A1&"123" renverra "ABCtest123" si A1 contient "test"
les guillements ' font partie de la syntaxe
'[ClasseurSource.xls]NomFeuille'!AdresseCellule

Sinon j'ai un peu "cafouillé" dans le choix du type de liste, laquelle me
recommandes-tu et comment la mettre en oeuvre?
Apparement je vais avoir un problème avec le format date.
Le choix d'un mois renvoit un format date en A1, et bien sur une erreur
dans la cellule liée ...
Le mieux est une liste de validation (données/validation/liste)

si ta liste est : 01/01/05, 01/02/05, ... au format "mmmm" il y aura en
effet un problème.
il faut remplacer le A1 par TEXTE(A1;"mmmm") qui renverra janvier,
février...
=INDIRECT("'[ClasseurSource.xls]"&TEXTE(A1;"mmmm")&"'!$B$8")

ATTENTION aux accents (février, août...)

Stéphane




"LuckyGuy" a écrit dans le message de news:

Bonsoir Stéphane

Effectivement ta solution fonctionne lorsque le classeur source est
ouvert.
Par contre j'ai du modifier la formule (empiriquement, après plusieurs
essais) ainsi:
=INDIRECT("'[ClasseurSource.xls]"&A1&"'!$B$8")
En supprimant Feuille donc, est-ce normal?
Et pour approfondir le sujet, à quoi servent tous ces guillemets, simples
ou doubles?
Il doit s'agir d'une concaténation.

Comme tu l'as bien compris, il serait plus simple pour l'utilisateur de
ne pas avoir à ouvrir le classeur source au préalable. Je suis donc allé
sur le site que tu m'as donné et j'essaierai INDIRECT.EXT dès que je peux
au bureau.

Sinon j'ai un peu "cafouillé" dans le choix du type de liste, laquelle me
recommandes-tu et comment la mettre en oeuvre?
Apparement je vais avoir un problème avec le format date.
Le choix d'un mois renvoit un format date en A1, et bien sur une erreur
dans la cellule liée ...

Même si ma question n'est pas réglé, les premiers resultats sont
encourageants et je te remercie pour ton aide avisée.

Je te tiens au courant de la suite de mes essais

Guy

"SL" a écrit dans le message de news:

Bonjour
essaie
=INDIRECT("'[ClasseurSource.xls]Feuille"&A1&"'!$B$8")
avec en A1 ton mois (issue de la liste de validation)

si le classeur source est fermé, regarder par exemple du coté de
INDIRECT.EXT chez Laurent Longre (http://xcell05.free.fr/)

Stéphane

"LuckyGuy" a écrit dans le message de news:

Bonsoir michdenis

Je te remercie pour ta réponse.

En effet l'enregistreur remplit bien son rôle pour un remplacement
ponctuel:

Sub RemplaceMois()
Range("B:C,J:K").Select
Selection.Replace What:="septembre", Replacement:="octobre"
End Sub

Mais je souhaiterais néanmoins quelquechose de plus "souple" pour
l'utilisateur.
Dans la procédure ci-dessus les mois sont figés, alors qu'il faudrait
pouvoir choisir le mois à rapatrier dans les formules de liaison.
Littéralement celà donnerait ceci:
Si un mois "M" est sélectionné grâce à une liste contenant janvier à
décembre dans le classeur cible, alors les formules en liaison avec le
classeur source prennent aussi la valeur "M".
A l'heure actuelle la formule est la suivante:
=[ClasseurSource.xls]FeuilleSeptembre'!ColonneB_NuméroLigne

Qu'en penses-tu?

Merci

Guy






"michdenis" a écrit dans le message de news:

Bonjour LuckyGuy,

Utilise la commande Rechercher-Remplacer du menu édition.

Tu dois prendre soin de définir l'option suivante :
Regarder dans : Formules
Ne pas cocher l'option : Totalité du contenu de la cellule.
Dans : Feuille.

Si tu utlises l'enregistreur de macro durant le processus, il devrait
te donner la presque totalité du code. Au besoin, fais signe.


Salutations!




"LuckyGuy" a écrit dans le message de news:
%
Bonsoir à vous tous

J'aimerai vous poser une question sur la mise à jour d'une liaison
entre 2
classeurs, grâce à une liste déroulante.

Le classeur source contient 12 feuilles, nommées de janvier à
décembre - et
alimente avec des liaisons une feuille unique du second classeur.
Dans celui-ci, j'aimerai qu'à l'aide d'une liste déroulante,
l'utilisateur
puisse choisir un mois (de janvier à décembre) et que cette sélection
modifie le mois dans la formule de la liaison.
Exemple: Si je choisis octobre dans la liste déroulante du classeur
cible,
ce sont les chiffres d'octobre qui seront rapatriés du classeur
source.
Les données sont en colonnes dans un tableau mise en forme (sous
totaux,
totaux).

Pensez-vous que ce soit possible? avec une formule conditionnelle? une
macro?

Rechercher/remplacer fonctionne très bien, mais je souhaiterai gagner
en
souplesse et en convivialité.

Je vous remercie de votre aide

Guy