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 :

Modifier formule matriciel dans une macro VBA [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Cartographe
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut Modifier formule matriciel dans une macro VBA
    Bonjour,
    J'ajoute une information provenant d'une liste à une formule matriciel à l'aide d'une macro

    Voici l'exemple d'une formule matricielle dans un calendrier :
    {=SIERREUR(INDEX(ETABEVENEMENT;PETITE.VALEUR(SI(EDATE='Horaire (2)'!L24;LIGNE(EDATE)+1);LIGNE(ÉVÉNEMENTS!$3:$3))-DébutLigneTableau;4);"")}
    Résultat : Collecte - Noël des enfants

    À l'aide d'un clic droit sur la cellule, j'ai une liste déroulante d'une barre de menue personnalisé avec des partenaires provenant d'une autre table, et quand j'en choisis un, ça l'ajoute à la suite de ma formule à l'aide d'une macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro1()
     
    ActiveCell.FormulaArray = ActiveCell.FormulaArray & " &" & """" & " - " & CommandBars.ActionControl.Text & """"
     
    End Sub
    Résultat :

    {=SIERREUR(INDEX(ETABEVENEMENT;PETITE.VALEUR(SI(EDATE='Horaire (2)'!F31;LIGNE(EDATE)+1);LIGNE(ÉVÉNEMENTS!$1:$1))-DébutLigneTableau;4);"") &" - PCa"}
    Ce qui donne :

    Collecte - Noël des enfants - PCa

    J'aimerais maintenant pouvoir modifier ma macro afin qu'il recherche s'il y a déjà de l'information, et si oui, la remplacer par la nouvelle information.
    Je voyais quelque chose comme :
    recherche ce qui est après " &", supprime et remplace par la nouvelle valeur.

    C'est là que je n'y arrive à rien.

    Pouvez-vous m'aider ?

    Merci infiniment

    Tim

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Frml As String
     
    Frml = ActiveCell.FormulaArray
     
    If InStr(Frml, "&") Then Frml = Left(Frml, InStrRev(Frml, "&"))
     
    Frml = Frml & """ - " & CommandBars.ActionControl.Text & """"
    ActiveCell.FormulaArray = Frml

  3. #3
    Membre du Club
    Homme Profil pro
    Cartographe
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut
    Bonjour Mercatog,

    j'en profite pour te remercier, car depuis des années que j'utilise développez dans l'ombre, tu est à la base de nombreuses solution que j'ai trouvé.

    Merci aussi pour ton code rapide, comme toujours. Voici le résultat :

    Si je veux modifier un champ contenant déjà un partenaire, il le modifie bien (good job !!).
    Si par contre je veux en modifier un que je n'ai pas mis de partenaire, il me lance une erreur d'exécution '1004' :
    Impossible de définir la propriété FormulaArray de la classe Range.

    Ce qui me pointe vers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaArray = Frml
    J'ai essayé toute sorte de patente, mais j'arrive jamais à avoir un résultat fonctionnel.

    Merci encore !

    Tim

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour

    Petite coquille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Frml As String
     
    Frml = ActiveCell.FormulaArray
     
    If InStr(Frml, "&") Then Frml = Left(Frml, InStrRev(Frml, "&") - 1)
     
    Frml = Frml & "&"" - " & CommandBars.ActionControl.Text & """"
    ActiveCell.FormulaArray = Frml

  5. #5
    Membre du Club
    Homme Profil pro
    Cartographe
    Inscrit en
    Novembre 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2013
    Messages : 6
    Par défaut
    C'est GÉNIAL !

    Merci Mercator !
    Que ton code puisse servir à d'autre

    Tim

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

Discussions similaires

  1. [XL-2016] Mettre formule de calcul Excel dans une macro VBA
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/09/2016, 19h54
  2. [XL-2003] Formule excel dans une macro
    Par gangstarrr dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 15/03/2011, 16h41
  3. Intégrer un VBS dans une macro VBA (Excel)
    Par fabibi001 dans le forum VBScript
    Réponses: 2
    Dernier message: 12/06/2010, 16h33
  4. [XL-2003] problème formule #NOM? dans une macro
    Par VBA je te hais dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/09/2009, 15h43
  5. Copier Coller du Code dans une macro VBA
    Par ted the Ors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/04/2008, 16h11

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