Montage de formule type Indirect par macro ??

ccdouble6

XLDnaute Occasionnel
Bonjour à tous !!
Et Meilleurs voeux pour cette nouvelle année !! :)

Voici un problème qui me turlupine depuis plusieurs jours.
J'ai deux fichiers sous la main, dont les données de l'un (souvent calculées par formule) doivent se copier en valeur sur l'autre.
L'ennui c'est qu'il y a ici ou là des conditions (pas de copie pour certaines colonnes, saut de lignes etc...) et que les emplacements des fichiers peuvent changer.

Alors j'ai essayé avec une formule INDIRECT() dans les cellules qui reprenait le chemin de la source saisi en trois cellules.
Problème : la source peut-être fermée et là plus rien ne suit.

J'ai essayé avec INDIRECT.EXT() de Morefunc.
Problème : il y a un très grand nombre de cellules avec cette formule et ça rame un max au démarrage.

Alors je me demande si par VBA il n'y aurait pas moyen d'insérer dans les cellules voulues une formule montée de toutes pièces à partir des infos saisies dans des cellules précises (chemin, nom de fichier, nom de feuille, ligne et colonne).
En fait une sorte d'Indirect fait en vba :confused: si cela existe...

Les fichiers sont actuellement très lourds et comportent des données privées, alors pour simplifier j'ai zippé un petit exemple.

Merci d'avance pour votre éclairage.
Cordialement,
ccdouble6.
 

Pièces jointes

  • Montage indirect par macro.zip
    17.2 KB · Affichages: 44

James007

XLDnaute Barbatruc
Re : Montage de formule type Indirect par macro ??

Bonjour,

Plusieurs solutions existent, mais avec de gros fichiers fermés, perso, je te conseille la méthode ADO ...

Je te joins un ancien fichier que j'utilise pour lire les onglets de fichiers fermés ...
Tu peux sans doute t'en inspirer ...

A +
:)
 
Dernière édition:

ccdouble6

XLDnaute Occasionnel
Re : Montage de formule type Indirect par macro ??

Merci James007 :)
J'ai jeté un oeil et testé un peu mais je comprends pas tout :confused:

Je mets quelques données mettons dans la colonne 7 de monfichier.xlsx créé dans
C:\Documents and settings (xlsx car j'utilise XL2007)
je corrige le xls en xlsx dans ton fichier
je clique sur LISTE et j'ai trois messages d'affilé : Feuil1 [je clique ok] Feuil2 [je clique ok] Feuil3 [je clique ok] et rien de plus...
J'ai dû loupé un épisode...
Je ne comprends pas le code, et je ne sais pas quoi faire exactement :confused:
Merci de me donner des précisions.

En tout cas a priori le montage de formule par macro ça n'est pas possible alors, c'est dommage...
A+ !
 

job75

XLDnaute Barbatruc
Re : Montage de formule type Indirect par macro ??

Bonjour le fil,

Pourquoi ne pas entrer dans la cellule la formule classique d'une liaison ?

Cela n'a rien de difficile en VBA, par exemple cette macro dans le fichier joint :

Code:
Sub CopierCellule()
Dim chemin$, fichier, feuille$, adresse$, cel As Range
chemin = [C10] '"C:\Ma source\"
fichier = [D10] & ".xlsb" '"Source.xlsb"
feuille = [E10] '"Feuil1"
adresse = Cells([C5], [D5]).Address '$E$5
Set cel = [C7]
cel.Formula = "='" & chemin & "[" & fichier & "]" & feuille & "'!" & adresse
'cel = cel 'facultatif, si l'on veut ne garder que la valeur
End Sub

La macro est dans Module2. Effacez la cellule C7 puis lancez-la (Alt+F8).

Bien sur il faut avoir mis le dossier Ma source et le fichier Source.xlsb aux bons endroits...

Edit : pour info, j'ai maintenant un portable avec Excel 2010...

A+
 

Pièces jointes

  • TEST chemin(1).zip
    13.3 KB · Affichages: 43
Dernière édition:

ccdouble6

XLDnaute Occasionnel
Re : Montage de formule type Indirect par macro ??

Bonsoir à tous,

Merci Job75, c'est exactement ce que je cherchais :) mais je pensais pas qu'on pouvait le dire comme ça :eek:
Une question par rapport à ton code : à quoi servent les $ dans la partie Dim ? j'en vois un après "chemin", après "feuille" et après "adresse" :confused:, je connaissais pour des cellules, mais là...
Bonne soirée,
ccdouble6
 

job75

XLDnaute Barbatruc
Re : Montage de formule type Indirect par macro ??

Bonsoir ccdouble6,

Dim chemin$ c'est la même chose que Dim chemin As String.

Et j'aurais dû écrire aussi fichier$, bien que ça n'ait pas d'importance ici.

fichier sans rien déclare la variable As Variant.

A+
 

Discussions similaires

Réponses
4
Affichages
292

Statistiques des forums

Discussions
312 207
Messages
2 086 234
Membres
103 162
dernier inscrit
fcfg