patricktoulon
XLDnaute Barbatruc
Bonjour a tous
je fait un peu le menage dans mes fonctions et j'ai retrouvé un truc que j'aimerais bien résoudre
en effet en alternative a ADO il m'arrive d'utiliser une astuce assez simple qui consiste à utiliser un name dans le quel j'ai un lien d'une plage dans un fichier fermé et l'utiliser sur une plage de meme dimension
sauf que si la plage destination et la plage source n'ont pas la meme address j'ai des "#Valeur"dans les cellules qui sont décalées dans la destination
en gros si ma plage source commence en "B" et que je la pose en A dans destination la colonne A aura des "#Valeur"
et pareil pour les lignes
c'est domage pour des petite plage c'est une alternative intéressante a ADO qui est verbeux
allez les cracks
je fait un peu le menage dans mes fonctions et j'ai retrouvé un truc que j'aimerais bien résoudre
en effet en alternative a ADO il m'arrive d'utiliser une astuce assez simple qui consiste à utiliser un name dans le quel j'ai un lien d'une plage dans un fichier fermé et l'utiliser sur une plage de meme dimension
sauf que si la plage destination et la plage source n'ont pas la meme address j'ai des "#Valeur"dans les cellules qui sont décalées dans la destination
en gros si ma plage source commence en "B" et que je la pose en A dans destination la colonne A aura des "#Valeur"
et pareil pour les lignes
VB:
Option Explicit
Sub test1()
'pour une plage classique
Dim chemin$, fichier$, feuille$, rngsource As Range, rngdestination As Range
chemin = ThisWorkbook.Path & "\" 'ne pas oublier le dernier slach
fichier = "source.xlsx"
feuille = "toto"
Set rngsource = [b4:d10]
Set rngdestination = Sheets("Feuil1").[A1]
GetTableOnClosedFich chemin, fichier, feuille, rngsource, rngdestination
End Sub
Sub GetTableOnClosedFich(chemin$, fichier$, feuille$, rng As Range, rngD As Range)
ThisWorkbook.Names.Add "plage", RefersTo:="='" & chemin & "[" & fichier & "]Feuil1'!" & "Tableau1"
' me donne qu'une partie du tableau
With rngD.Resize(rng.Rows.Count, rng.Columns.Count)
.Value = "=plage"
.Value = .Value
End With
' me donne le tableau mais en partant de A1 de la source et donc des ligne et ou colonnes "#VALEUR"
With rngD.Resize(rng.Rows.Count + 3, rng.Columns.Count + 1)
.Value = "=plage"
.Value = .Value
End With
ThisWorkbook.Names("plage").Delete
End Sub
allez les cracks