XL 2019 Lier une cellule à la valeur d'une cellule d'une autre feuille et non à la cellule en elle-même

apzlr

XLDnaute Nouveau
Bonjour à tous,

Pour mon commerce, j'ai recensé dans une feuille excel (Feuille1) toutes les pièces que nous avons en stock avec des données intrinsèques à ces dernières de la manière suivante ( de façon abrégée) :

A​
B​
C​
D​
E​
1​
Catégorie de produit​
Référence​
Désignation​
Couleur​
Matière​

J'ai créé d'autres feuilles excel où je regroupe ces pièces par catégorie de produit, donc en fonction des valeurs de la colonne A. Donc pour le moment cela donne :

Dans feuille "Catégorie produit 1"
ABCDE
1=Feuil1!A1=Feuil1!A2=Feuil1!A3=Feuil1!A4=Feuil1!A5

Le problème que je rencontre est le suivant : lorsque dans la Feuille1 je filtre les cellules d'une certaine façon (croissant ou décroissant par exemple) les valeurs se déplacent et donc cela modifie également les pièces que j'ai dans mes feuilles de catégories de produit, ce qui ne va donc pas.

C'est pourquoi je recherche une solution pour que ma cellule A1 de ma feuille "Catégorie de produit 1" soit liée au contenu de la cellule A1 de la Feuille 1 (qui peut donc être déplacée) et non uniquement à la cellule A1.

Par exemple, si la valeur qui se trouve en A1 se déplace en A9, j'aimerais que ma cellule A1 de ma feuille de catégorie de produit ne soit pas modifiée et reste la valeur de la cellule A1 initiale de la Feuille A1.

J'espère que mes explications sont assez claires pour que vous visualisez bien mon problème.
J'ai beau cherché à travers des formules, sur des forums, je n'ai pas trouvé de solution.

Merci à ceux qui m'aideront ! :)

Bonne journée
 
Solution
re
je suis bête je testais dans selection_change au lieu de change tout court:p;)
ceci fonctionne
DANS LE MODULE FEUIL2!!!!!
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Feuil1.Range(Target.Address) = "" Then Feuil1.Range(Target.Address) = Target.Value Else Exit Sub
End Sub
en résumé si la cellule jumelle est vide la valeur sera transmise sinon ça fait rien
mille excuse :oops:
apres tu peux limiter cet événement a une plage bien précise si tu veux
avec un test if not intersect(target ,range(xx:yy) is nothing then

patricktoulon

XLDnaute Barbatruc
bonjour
je comprends de 2 facon la
la première ce que je supute
c'est que feuille (x).A1=feuilles(y).A1 mais que feuille (x).A1 ne change pas si feuilles(y).A1 change
c'est ça ??????
hummmmm... ça sent bon le besoins de référence circulaire ça
et donc le calcul itératif coché(activé) dans les options excel
;)
c'est pas une bonne idée
passe par vba et quoi que même là ça peut devenir compliqué a gérer
 

apzlr

XLDnaute Nouveau
bonjour
je comprends de 2 facon la
la première ce que je supute
c'est que feuille (x).A1=feuilles(y).A1 mais que feuille (x).A1 ne change pas si feuilles(y).A1 change
c'est ça ??????
hummmmm... ça sent bon le besoins de référence circulaire ça
et donc le calcul itératif coché(activé) dans les options excel
;)
c'est pas une bonne idée
passe par vba et quoi que même là ça peut devenir compliqué a gérer


En simplifié, c'est ça oui ! :)
Si je reprends ta manière de raisonner, ça donne :

feuille(x).A1 = feuille(y).A1 mais si feuille(x).A1 devient feuille(x).A9 je veux que feuille(x).A9 = feuille(y).A1

Que me proposes-tu comme vba?
 

patricktoulon

XLDnaute Barbatruc
re
je suis bête je testais dans selection_change au lieu de change tout court:p;)
ceci fonctionne
DANS LE MODULE FEUIL2!!!!!
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Feuil1.Range(Target.Address) = "" Then Feuil1.Range(Target.Address) = Target.Value Else Exit Sub
End Sub
en résumé si la cellule jumelle est vide la valeur sera transmise sinon ça fait rien
mille excuse :oops:
apres tu peux limiter cet événement a une plage bien précise si tu veux
avec un test if not intersect(target ,range(xx:yy) is nothing then
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ce que je verrais ce serait un traitement à l'activation des feuilles.
Il consisterait à remplacer dans l'autre feuille toutes les références à celle activée par leur valeurs avant de transformer au contraire sa valeur dans celle activée en une référence absolue vers l'autre. Mais s'il peut y avoir dans une des feuilles plusieurs lignes avec la même valeur c'est un peu plus compliqué …
 

job75

XLDnaute Barbatruc
Bonjour apzir, patricktoulon, Bernard,

A priori il suffit d'ajouter une colonne dans la 1ère feuille, voyez le fichier joint.

Ces numéros sont ensuite utilisés avec des formules RECHERCHEV dans la 2ème feuille.

A+
 

Pièces jointes

  • Classeur(1).xlsx
    11.3 KB · Affichages: 16

apzlr

XLDnaute Nouveau
Mon fichier suffit non ? Les valeurs en 2ème feuille ne changent pas quand on modifie le tri en Feuil1.
Oui sur ton fichier ça marche impec car tu prends l'ensemble des données, alors que dans mon cas je dois prendre uniquement les numéros 3, 4, 5 par exemple. Il faut donc que je sélectionne la plage où se trouve les données recherchées mais celle-ci est évolutive selon le tri, ce n'est pas à priori pas possible avec RECHERCHEV.

Je ne sais pas si je suis très clair, ce que je recherche semble assez complexe je vais abandonner cette piste et adapter mon fichier autrement.

Merci pour l'aide, je clos le sujet !
 

Discussions similaires