RechercheV dans autres fichiers - Chemin variable et inconnu
Salut à tous,
Je viens solliciter votre aide, aujourd'hui, car je suis dans une belle galère...
Apprenti en France, je suis actuellement dans une filliale étrangère en Allemagne. Du coup, on fonctionne pas du tout pareil et je ne peux rien imposer.
Cela fait 2 semaines que je travaillais sur plusieurs fichiers excel plein de VBA
Avec votre aide j'avais réussi a bouclé ma dernière macro, tout est OK. Quand j'utilise mes fichiers sur mon ordinateur tout fonctionne correctement et même parfaitement
Mon problème :
Le fichier ou on écrit les données : Input_concept.xlsm
Le fichier (esclave) à qui ont impose des données : flags.xlsx
Quand j'écris dans mon fichier maître, cela va entrer créer de nouveaux onglets dans le fichier maître mais surtout allez écrire dans le fichier esclave.
Ainsi, ma macro pose une formule RechercheV dans la case B2 du fichier esclave.
La voici :
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC1,INDIRECT(""'Q:\OTD\05 TSSM\10 Business Intelligence\02 Data\05 QlikView\Flags\Input_concept.xlsm]"" & R1C & ""'!$a$1:$a$1000""),1,0)),"""",1)"Comme vous l'aurez surement remarqué, il y a déjà une variable dans la formule. En effet, il va allez rechercher dans le fichier maître l'informations qu'ils souhaitent dans le bon onglet. Tout ça est OK.
MAIS je ne suis pas le seul à utiliser ce fichier. En effet, je l'ai implanter sur un dossier intra entreprise en Allemagne. Niveau sécurité, c'est hors-norme --'
Ils ont tous accès aux fichiers, mais le chemin pour y accéder est différent entre chaque PC...
Donc la macro ne fonctionne pas pour les autres....
La chose pratique, je sais que l'ensemble des fichiers se trouvent dans le dossier "Flags" et que biensûr nous ouvrons le fichier maître et esclave en même temps pour faire fonctionner le tout.
Etant donnée que je ne connais le dossier (juste le dossier final) où sont posés les fichiers et que nous ouvrons bien les deux fichiers dès le départ. Y'a t-il un moyen d'adapter ma formule pour que excel aille dans le fichier "Input_concept.xlsm" sans lui indiquer le chemin de départ ?
Je trouve des explications sur les forums qui correspondent pas réellement à mon cas j'ai l'impression où qui ne fonctionne pas pour moi. Si vous avez des idées je suis prenneur
Bonsoir Dyjor91240
Pour moi le seul chemin qui ne peut être différent c'est l'UNC ou alors vous ne travaillez pas sur le même fichier.
Il suffit donc de mettre ce chemin dans ta formule
A+
D'accord, je te remerci. Je vais tenter de trouver l'adresse UNC du dossier alors
Car la j'avais trouvé, une solution, mais .....
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC1,INDIRECT(""'[Input_concept.xlsm]"" & R1C & ""'!$a$1:$a$1000""),1,0)),"""",1)"Cela fonctionne très bien, mais le temps de calcul passe de 5 secondes à 10 minutes
Connais-tu un moyen de récupérer l'adresse UNC d'un dossier ?
Je trouve pas mal de chose sur internet, mais ça me parle de language DELPHI et compagnie...
EDIT : Problème a moitié résolu !
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC1,INDIRECT(""'[Input_concept.xlsm]"" & R1C &"" ' !$a$1:$a$1000""),1,0)),"""",1)"Je suis repassé de 10 minutes à 10 secondes de traitement. Simplement en enlevant la ( ' ) que j'avais oublié après la variable R1C....
Je comprend pas trop, pourquoi cette différence de temps, juste pour ça. Mais le principale c'est ça fonctionne
EDIT 2 :
=SI(ESTERREUR(RECHERCHEV($A13;INDIRECT("[Input_concept.xlsm]" & G$1 & "!$a$1:$a$1000");1;0));"";1)Voici la formule qui est implanté dans une des cases du fichier esclaves. Et c'est nickel, il va chercher les informations là ou il faut. Jusqu'à... la colonne G après tout le reste il met la formule mais y'a pas aucune résultat affiché. Pourtant, les onglets sont bien dans le fichier Input_concept. Et tout correspond bien.
Une idée de pourquoi ce bug ?
Je tiens au courant tout le monde encore
Du coup, oui ma rechercheV a été accélérée en enlevant une ( ' ) qui était en trop.
Néanmoins, depuis la rechercheV ne trouvait pas certains résultats.
J'ai trouvé le pourquoi, du comment
En effet, avant quand je mettais le chemin complet, ma rechercheV fonctionnait avec tous les caractères.
Aujourd'hui, si dans mon en-tête (qui est une variable) et dans mon onglet (qui à le même nom), je met un espace ( ) ou un tiret (-). Cela ne fonctionne plus...
Alors que si je met un underscore (_) cela fonctionne de nouveau.
Exemple :
C-Service >>> Ne fonctionne pas
C Service >>> Ne fonctionne pas
C_Service >>> Fonctionne
Bon dans l'immédiat je peux faire avec, mais c'est tout de suite moins beau. En sachant que le nom de mon produit c'est C-Service avec un tiret
Quelqu'un d'entre vous à une idée pour passer à travers de ce problème et repouvoir mettre des tirets et espaces
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(RC1,INDIRECT(""'[Input_concept.xlsm]"" & R1C &""!$a$1:$a$1000""),1,0)),"""",1)"Pour rappel, voici ma formule actuelle
RC1 : Correspond à la première colonne avec seulement le A de bloqué $A...
R1C : Correspond à la première ligne avec seulement le 1 de bloqué ...$1
Bonjour
Connais-tu un moyen de récupérer l'adresse UNC d'un dossier ?
Je trouve pas mal de chose sur internet, mais ça me parle de language DELPHI et compagnie...
Mince, si tu ne connais déjà la base de Windows et des accès réseaux
Re,
Du coup, oui ma rechercheV a été accélérée en enlevant une ( ' ) qui était en trop.
Non pas en trop
Néanmoins, depuis la rechercheV ne trouvait pas certains résultats.
J'ai trouvé le pourquoi, du comment
En effet, avant quand je mettais le chemin complet, ma rechercheV fonctionnait avec tous les caractères.
Aujourd'hui, si dans mon en-tête (qui est une variable) et dans mon onglet (qui à le même nom), je met un espace ( ) ou un tiret (-). Cela ne fonctionne plus...
Alors que si je met un underscore (_) cela fonctionne de nouveau.
Exemple :
C-Service >>> Ne fonctionne pas
C Service >>> Ne fonctionne pas
C_Service >>> Fonctionne
C'est pour cela que tu as ton/tes apostrophes, il faut encadrer le nom de ton classeur+feuille avec des apostrophes
Sinon perso, j'utiliserais "FormulaLocal" plutôt que FormulaR1C1
Ce qui donne en code
Sub Test()
Dim Lig As Long, sForm As String
' Numéro de la ligne
Lig = Selection.Row
' La formule
sForm = "=SI(ESTERREUR(RECHERCHEV($A#;INDIRECT(""'[Input_Concept.xlsm]"" & G$1 & ""'!$A$1:$A$1000"");1;FAUX));"""";1)"
' Replacer le # par le numéro de ligne et inscrire la formule
ActiveCell.FormulaLocal = Replace(sForm, "#", Lig)
End SubA+