IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Insertion, dans une cellule, d'une formule contenant une rechercheV vers un classeur différent [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Géomètre
    Inscrit en
    Juin 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2024
    Messages : 4
    Par défaut Insertion, dans une cellule, d'une formule contenant une rechercheV vers un classeur différent
    Bonjour,

    Je suis débutant en programmation et j'ai un souci avec une macro que je réalise en VBA.

    Je dispose d'une feuille qui collecte plusieurs informations piochées dans différents classeurs "SOURCE".
    Dans la majorité des cas, je rassemble ces données Ã* partir des feuilles sources que je fais copier par la macro dans mon classeur "COLLECTE". Ces classeurs sources lÃ* sont très légers.

    Mon problème survient lorsque je dois collecter les données de plusieurs classeurs "SOURCE" très lourds (svt supérieur Ã* 100mo). Pour cette raison je ne souhaite pas les ouvrir pour faire migrer les feuilles et collecter les données.

    Mon alternative jusqu'Ã* présent consistait Ã* "garder" dans les cellules idoines de mon classeur "COLLECTE" des formules avec recherchev qui lançait la collecte Ã* partir d'une variable renseignée par la macro.
    Cela fonctionnait et le résultat était suffisant.
    (pour exemple, une formule est:
    =ARRONDI(RECHERCHEV($B$63;'C:\SOURCES pour ASSEMBLAGE\[SOURCE_2017-Assemblage.xlsx]SOURCE_2017'!$A:$QZ;10;FAUX);3)
    pour des donnée de l'année 2017)

    J'aimerais améliorer les choses afin (1) de circonvenir au risque d'erreur de manip amenant Ã* l'effacement par maladresse des formules en question et (2) de permettre la modification du dossier des classeurs "SOURCE"

    Dans la macro de collecte des données, je souhaite ajouter du code permettant de ré-écrire la formule précédente, telle quelle, dans la cellule qui lui correspond (les cellules cibles varient en même temps que l'index de rechercheV). Et que la recherche s'exécute.

    J'ai créé une variable string pour reproduire l'adresse et les plages de recherche précédemment :
    PlageRech_SOURCE17 = "'" & xStrPathSOURCE & "[SOURCE_2017-Assemblage.xlsx]SOURCE_2017'!$A:$QZ" (avec xStrPathSOURCE="C:\SOURCES pour ASSEMBLAGE")

    Puis j'essaie d'écrire la formule dans une cellule de la feuille "COLLECTE" avec (parmis mes nombreuses tentatives) :

    Sheets("COLLECTE").Range("G60").Formula = "=RECHERCHEV($B$63;" & PlageRech_SOURCE17 & ";10;FAUX)"

    Mais rien ne s'affiche dans la cellule G60 en question.

    Si je modifie la formule en ajoutant une apostrophe avant le "=" :
    Sheets("COLLECTE").Range("G60").Formula = "'=RECHERCHEV($B$63;" & PlageRech_SOURCE17 & ";10;FAUX)"

    , alors le texte s'affiche mais ne s'exécute bien entendu pas. Si ensuite (hors macro), je retire manuellement l'apostrophe , la formule s'exécute et le résultat voulu apparait. Mais cela retire une bonne partie de l'intérêt de cette démarche.

    Je pense avoir essayé plusieurs options glanées de part et d'autre (. value, .range, "," au lieu de ";", vlookup au lieu de rechercheV,...) , mais sans succès. Pourriez vous m'aiguiller s'il vous plait.

    Merci Ã* tous
    Philippe

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Puis j'essaie d'écrire la formule dans une cellule de la feuille "COLLECTE" avec (parmis mes nombreuses tentatives) :
    Sheets("COLLECTE").Range("G60").Formula = "=RECHERCHEV($B$63;" & PlageRech_SOURCE17 & ";10;FAUX)"
    Mais rien ne s'affiche dans la cellule G60 en question.
    Cela m'étonnerait beaucoup qu'il n'y ait pas eu un message d'erreur provenant du VBA sauf si évidemment vous avez placé un ON ERROR RESUME NEXT
    1. La propriété Formula attend la formule en anglais donc RECHERCHEV et FAUX cela ne passe pas.
    2. Le séparateur d'argument pour les formules en anglais c'est une virgule et pas un point-virgule

    Exemple très simple depuis la même feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t()
      Dim sht As Worksheet
      Dim oRange As Range
      Set sht = ThisWorkbook.Worksheets("Feuil1")
      Set oRange = sht.Range("$B$3:$C$6")
      sht.Range("A2").Formula = "=VLOOKUP(A1," & oRange.Address & ",2,FALSE)"
     Set oRange = Nothing: Set sht = Nothing
    End Sub
    Si vous voulez absolument utiliser les fonctions en français, ce que personnellement je déconseille, il faut alors utiliser la propriété FormulaLocal
    Exemple : sht.Range("A2").FormulaLocal = "=RECHERCHEV(A1;" & oRange.Address & ";2;FAUX)" ' = "=RECHERCHEV(A1;" & orange & ";10;FAUX)"

    Si vous pouviez réparer votre clavier cela serait plus simple pour vous lire
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 523
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 523
    Par défaut
    Hello,

    Quid de Power Query pour collecter tes données ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Géomètre
    Inscrit en
    Juin 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2024
    Messages : 4
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Hello,

    Quid de Power Query pour collecter tes données ?
    Bonjour, merci pour votre réponse, mais je ne connais pas power qwery. Ensuite, toutes mes données sont sur des classeurs excels, et j'avais quelques bases de VB il y a une vingtaine d'année. D'où ce qui s'en suit.

    Bonne journée.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 523
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 523

  6. #6
    Membre à l'essai
    Homme Profil pro
    Géomètre
    Inscrit en
    Juin 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2024
    Messages : 4
    Par défaut
    Bonjour,
    Merci pour votre reponse, elle m'a permis de reprendre le cours de mon travail. Effectivement, il s'agissait bien d'une erreur de passerelle anglais français.

    Je n'ai pas eu de message d'erreur effectivement du fait du " ON ERROR RESUME NEXT". Je vais creuser les conséquences de ce bout de code, je n'avais pas de message lors du débogage non plus d'ailleurs.

    Concernant mon clavier, je crois n'avoir jamais eu de probleme de caractères accentues avec, hormis pour ce forum. Veuillez l'excuser, je vais essayer de trouver la raison pour une eventuelle prochaine fois (pour le coup, j'ecris sans accent).

    A tout hasard, j'aimerais transposer mon code pour qu'il puisse fonctionner sur mac (pour une collegue), connaissez vous un moyen de tester mes modifications "mac" depuis mon PC?

    Enfin, encore merci car j'ai eu l'occasion d'utiliser vos lumières à de nombreuse reprises pour mes macros precedentes.

    Bonne journee.
    Philippe

  7. #7
    Membre à l'essai
    Homme Profil pro
    Géomètre
    Inscrit en
    Juin 2024
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Géomètre
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2024
    Messages : 4
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Je vais regarder à tout hasard, j'ignore si l'usage apparaitra à mes yeux.
    Mais en premiere lecture, je dirai que les donnees que je traite proviennent de l'administration, et manque souvent d'uniformite (mais cela s'améliore avec les millesimes, ou pas.
    Bonne journee
    Philippe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/06/2012, 16h13
  2. Réponses: 1
    Dernier message: 14/12/2011, 16h50
  3. [OpenOffice][Tableur] Insertion dans une cellule
    Par stargates dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 16/03/2009, 20h03
  4. Problème avec Insert dans une table contenant deux clés
    Par pure_blue dans le forum Accès aux données
    Réponses: 5
    Dernier message: 23/10/2006, 19h32
  5. Réponses: 2
    Dernier message: 07/11/2005, 18h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo