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

VBA - Comment savoir sur quelle feuille se situe une référence g lo

2 réponses
Avatar
Alex St-Pierre
Bonjour,
J'ai un classeur qui est programmé pour mettre à jour la feuille "data" avec
les informations de la feuille "data" d'une deuxième classeur. Il se peut que
les lignes ne correspondent pas tout à fait. C'est pourquoi, je fais
référence à des noms de plage.

Je test sur toutes les cellules de la feuille "data", s'il y a un nom,
regarder si ce nom existe sur la feuille "data" du classeur 2, copier les
infos de #2 vers #1 si c'est le cas.
c = Len(Workbooks(sXlFileName).Sheets("data").Names(sTheName).Name)<>0
Ceci fonctionne si la référence est local seulement.. ne fonctionne pas si
global
Alors, je mets:
c = Len(Workbooks(sXlFileName).Names(sTheName).Name
Comment savoir si la référence est sur la feuille data ?
Attention au cas où il pourrait y avoir 2 fois le même, Local sur la feuille
"data" et global sur une autre feuille. Est-ce que le truc est de se
positioner sur la feuille "data" et demander la référence XYZ de façon
global, est-ce qu'Excel va donner la référence Local de la la feuille "data"
en premier, au lieu de global sur une autre feuille?
Merci !
Alex

Mon programme:
sXlFileName = Ancien classeur (celui dont on tire les infos)
sTargetWb = Classeur plus récent
For i = 1 To 500
For j = 1 To 6
Workbooks(sTargetWb).Activate
sTheName = ""
sTheName =
Workbooks(sTargetWb).Sheets("data").Cells(i,j).Name.Name
If sTheName <> "" Then
Workbooks(sXlFileName).Sheets("data").Activate
c = ""
c =
Workbooks(sXlFileName).Sheets("data").Names(sTheName).Name 'LOCAL (COMMENT
AJOUTER UN TEST POUR VOIR S'IL Y A UNE CELLULE DE LA FEUILLE DATA QUI EST
LOCAL OU GLOBAL?)
bNameExist = Len(c) <> 0
If bNameExist Then
Workbooks(sTargetWb).Sheets("data").Cells(i, j) =
Workbooks(sXlFileName).Sheets("data").Range(sTheName)
End If
End If
Next j
Next i
On Error GoTo 0
--
Alex St-Pierre

2 réponses

Avatar
isabelle
bonjour Alex,

x = Names("plg").RefersTo
Feuille = Mid(x, 2, Len(Split(x, "!")(LBound(Split(x, "!")))) - 1)

isabelle


Bonjour,
J'ai un classeur qui est programmé pour mettre à jour la feuille "data" avec
les informations de la feuille "data" d'une deuxième classeur. Il se peut que
les lignes ne correspondent pas tout à fait. C'est pourquoi, je fais
référence à des noms de plage.

Je test sur toutes les cellules de la feuille "data", s'il y a un nom,
regarder si ce nom existe sur la feuille "data" du classeur 2, copier les
infos de #2 vers #1 si c'est le cas.
c = Len(Workbooks(sXlFileName).Sheets("data").Names(sTheName).Name)<>0
Ceci fonctionne si la référence est local seulement.. ne fonctionne pas si
global
Alors, je mets:
c = Len(Workbooks(sXlFileName).Names(sTheName).Name
Comment savoir si la référence est sur la feuille data ?
Attention au cas où il pourrait y avoir 2 fois le même, Local sur la feuille
"data" et global sur une autre feuille. Est-ce que le truc est de se
positioner sur la feuille "data" et demander la référence XYZ de façon
global, est-ce qu'Excel va donner la référence Local de la la feuille "data"
en premier, au lieu de global sur une autre feuille?
Merci !
Alex

Mon programme:
sXlFileName = Ancien classeur (celui dont on tire les infos)
sTargetWb = Classeur plus récent
For i = 1 To 500
For j = 1 To 6
Workbooks(sTargetWb).Activate
sTheName = ""
sTheName =
Workbooks(sTargetWb).Sheets("data").Cells(i,j).Name.Name
If sTheName <> "" Then
Workbooks(sXlFileName).Sheets("data").Activate
c = ""
c =
Workbooks(sXlFileName).Sheets("data").Names(sTheName).Name 'LOCAL (COMMENT
AJOUTER UN TEST POUR VOIR S'IL Y A UNE CELLULE DE LA FEUILLE DATA QUI EST
LOCAL OU GLOBAL?)
bNameExist = Len(c) <> 0
If bNameExist Then
Workbooks(sTargetWb).Sheets("data").Cells(i, j) =
Workbooks(sXlFileName).Sheets("data").Range(sTheName)
End If
End If
Next j
Next i
On Error GoTo 0


Avatar
Alex St-Pierre
Merci, ça fonctionne mais pas dans tout les cas!
Si la référence local est sur la feuille data et qu'il y a une autre
référence global dans le fichier, la fonction me donne toujours la référence
global (que je sois sur la feuille data ou non) Ce qui est étonnant, c'est
que si je me place sur la feuille data et que je demande la référence local:
x = Names("plg").RefersToLocal (ou sans le local)
Feuille = Mid(x, 2, Len(Split(x, "!")(LBound(Split(x, "!")))) - 1)
La réponse n'est pas "data" comme on s'attend. Est-ce que quelqu'un a une
explication?
Merci !
--
Alex St-Pierre



bonjour Alex,

x = Names("plg").RefersTo
Feuille = Mid(x, 2, Len(Split(x, "!")(LBound(Split(x, "!")))) - 1)

isabelle


Bonjour,
J'ai un classeur qui est programmé pour mettre à jour la feuille "data" avec
les informations de la feuille "data" d'une deuxième classeur. Il se peut que
les lignes ne correspondent pas tout à fait. C'est pourquoi, je fais
référence à des noms de plage.

Je test sur toutes les cellules de la feuille "data", s'il y a un nom,
regarder si ce nom existe sur la feuille "data" du classeur 2, copier les
infos de #2 vers #1 si c'est le cas.
c = Len(Workbooks(sXlFileName).Sheets("data").Names(sTheName).Name)<>0
Ceci fonctionne si la référence est local seulement.. ne fonctionne pas si
global
Alors, je mets:
c = Len(Workbooks(sXlFileName).Names(sTheName).Name
Comment savoir si la référence est sur la feuille data ?
Attention au cas où il pourrait y avoir 2 fois le même, Local sur la feuille
"data" et global sur une autre feuille. Est-ce que le truc est de se
positioner sur la feuille "data" et demander la référence XYZ de façon
global, est-ce qu'Excel va donner la référence Local de la la feuille "data"
en premier, au lieu de global sur une autre feuille?
Merci !
Alex

Mon programme:
sXlFileName = Ancien classeur (celui dont on tire les infos)
sTargetWb = Classeur plus récent
For i = 1 To 500
For j = 1 To 6
Workbooks(sTargetWb).Activate
sTheName = ""
sTheName =
Workbooks(sTargetWb).Sheets("data").Cells(i,j).Name.Name
If sTheName <> "" Then
Workbooks(sXlFileName).Sheets("data").Activate
c = ""
c =
Workbooks(sXlFileName).Sheets("data").Names(sTheName).Name 'LOCAL (COMMENT
AJOUTER UN TEST POUR VOIR S'IL Y A UNE CELLULE DE LA FEUILLE DATA QUI EST
LOCAL OU GLOBAL?)
bNameExist = Len(c) <> 0
If bNameExist Then
Workbooks(sTargetWb).Sheets("data").Cells(i, j) =
Workbooks(sXlFileName).Sheets("data").Range(sTheName)
End If
End If
Next j
Next i
On Error GoTo 0