GNT sans publicité, site mobile, fonctionnalitées exclusives...

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

Le
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
Lire les 2 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #4036691
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


Alex St-Pierre
Le #4036601
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





Publicité
Suivre les réponses
Poster une réponse
Anonyme