XL 2010 Adaptation vba avec ThisWorkbook.Path

ced91300

XLDnaute Occasionnel
Bonjour à tous,

j'ai un vba pour recopier une plage de cellule d'un fichier fermé, pas de soucis il me le fait correctement

hors les fichiers vont être régulièrement changés de place, je voulais y mettre ThisWorkbook.Path pour que le chemin s'adapte mais hélas je n'y arrive pas

.Formula = "='C:\Users\cedric\Desktop\[fichierx.xlsm]'!A2:F100" est la ligne de code que je souhaite adapter avec ThisWorkbook.Path

Fichier joint, (vba en module1)

Merci de votre aide.

Cordialement
 

Fichiers joints

job75

XLDnaute Barbatruc
Bonsoir ced91300,
.Formula = "='C:\Users\cedric\Desktop\[fichierx.xlsm]'!A2:F100" est la ligne de code que je souhaite adapter avec ThisWorkbook.Path
Sans avoir ouvert le fichier joint :
VB:
.Formula = "='" & ThisWorkbook.Path & "\[fichierx.xlsm]'!A2:F100"
A+
 
Dernière édition:

job75

XLDnaute Barbatruc
S'agissant d'une plage il faut sans doute créer une formule matricielle :
VB:
.FormulaArray = "='" & ThisWorkbook.Path & "\[fichierx.xlsm]'!A2:F100"
 

ced91300

XLDnaute Occasionnel
S'agissant d'une plage il faut sans doute créer une formule matricielle :
VB:
.FormulaArray = "='" & ThisWorkbook.Path & "\[fichierx.xlsm]'!A2:F100"
Bonsoir jOB75

Toujours rien, une fois le code lancé, il ne se passe rien du tout :rolleyes:
 

ced91300

XLDnaute Occasionnel
S'agissant d'une plage il faut sans doute créer une formule matricielle :
VB:
.FormulaArray = "='" & ThisWorkbook.Path & "\[fichierx.xlsm]'!A2:F100"
Bonjour job75
J'ai une question supplémentaire, est il possible que cela copie que jusqu'à la dernière ligne non vide avec style End(xlUp) , étant donné que le nombre de ligne sera très variable? (j'ai essayé d'adapté, mais sans succès)
merci
 

job75

XLDnaute Barbatruc
J'ai une question supplémentaire, est il possible que cela copie que jusqu'à la dernière ligne non vide avec style End(xlUp)
Non, a priori on ne connaît pas le nombre de lignes car le fichier source est fermé.

Il faut donc copier toute la plage A2:F100 et si ce n'est pas suffisant la plage A2:F1000.

Bien sûr il y aura ainsi plein de zéros mais on peut les supprimer avec Replace :
VB:
.Value = .Value 'supprime les formules
.Replace 0, "", xlWhole
 

ced91300

XLDnaute Occasionnel
Non, a priori on ne connaît pas le nombre de lignes car le fichier source est fermé.

Il faut donc copier toute la plage A2:F100 et si ce n'est pas suffisant la plage A2:F1000.

Bien sûr il y aura ainsi plein de zéros mais on peut les supprimer avec Replace :
VB:
.Value = .Value 'supprime les formules
.Replace 0, "", xlWhole

Cool,
Merci pour ton aide
 

Discussions similaires


Haut Bas