VBA - Comment savoir sur quelle feuille se situe une référence g lo
2 réponses
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
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
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
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
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, 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
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,
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
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, 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