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 :

Formule matricielle pour une variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1
    Par défaut Formule matricielle pour une variable
    Bonjour,

    Je voudrais utiliser une formule matricielle dans une procédure VBA, mais que cette formule matricielle produise son résultat dans une variable et non dans une cellule Excel.
    Je ne veux donc pas utiliser la formule type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selection.formulaarray =  "=SUM(IF(R[-12]C[-1]:R[-3]C[-1]=""vélo"",R[-12]C[2]:R[-3]C[2]))"
    mais une formule du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maVariable = somme(si(maPlage1 = « vélo », maPlage2)
    Est ce possible, et si oui, comment procéder ?

    D’avance, je vous remercie

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour

    une petite astuce

    tu fais ta formule matricielle, tu la mets dans une cellule, elle se calcul, et tu recuperes son resutat dans ta variable

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    selection.formulaarray = "=SUM(IF(R[-12]C[-1]:R[-3]C[-1]=""vélo"",R[-12]C[2]:R[-3]C[2]))"
    mavariable = selection.value
    selection.clear
    maintenant, en ayant regardé plus profondemment la formule, c'est un somme.si tout simple

    Donc : application.worksheetfunction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mavaleur = Application.WorksheetFunction.SumIf(Range("A1:A12"), "Velo", Range("B1:B12"))
    Bonne soiree

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour et bienvenue sur le forum
    c'est possible..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub MyMacro()
    Dim Plage1 As Range
    Dim plage2 As Range
    Dim Plage3 As Range
    Dim Cell As Range
    Dim Total
    Set Plage1 = "A1:A10"
    Set plage2 = "B1:B10"
    Set Plage3 = "C1:C10" 'plage de test
     
        Plage3.Select
        For Each Cell In Selection
            If Cell.Text = "Vélo" Then
                'Trouvé "Vélo"
                plage2.Select
                GoTo suite1
            End If
        Next
        'Pas trouvé "Vélo"
        plage2.Select
    suite1:
        For Each Cell In Selection
            Total = Total + Cell.Value
        Next
    End Sub
    Si c'est cela que tu cherche...
    A+

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    SAlut et bienvenu
    [Edit]
    Je suis un peu lent ce soir [/Edit]
    Je suppose que cela est possible mais pas en utilisant les formulation Excel, mais je peux faire erreur.
    Pour ma part je ferais ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim CelTest As Range
    Dim Total As Integer
    'Selection.FormulaArray = "=SUM(IF(R[-12]C[-1]:R[-3]C[-1]=""vélo"",R[-12]C[2]:R[-3]C[2]))"
     
    Total = 0
    For Each CelTest In Range(Selection.Offset(-12, -1), Selection.Offset(-3, -1))
        If CelTest.Value = "vélo" Then Total = Total + CInt(CelTest.Offset(0, 3).Value)
    Next
    Selection.Value = Total
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Masquer des items pour une variable d'un tableau croisé dynamique en VBA
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/10/2007, 17h35
  2. Formules multiples pour une même cellule
    Par nenkira dans le forum Excel
    Réponses: 2
    Dernier message: 05/04/2007, 14h29
  3. UnboundLocalError pour une variable
    Par piotrr dans le forum Général Python
    Réponses: 3
    Dernier message: 04/04/2007, 13h49
  4. 2 valeurs possibles pour une variable : méthode Seek
    Par Corinne4775 dans le forum Access
    Réponses: 8
    Dernier message: 12/02/2007, 20h00
  5. Réponses: 6
    Dernier message: 08/06/2004, 15h22

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