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 en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2012
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 243
    Points : 58
    Points
    58
    Par défaut Formule matricielle en VBA
    Bonjour à tous(tes)
    J'ai un classeur qui me permet de gérer des formations.
    une feuille "SESSION" recense les sessions de formation (numéro unique)
    une feuille "SAISIE" répertorie les inscriptions (stagiaires)

    Dans ma feuille SAISIE, quand je double-clique dans une cellule de la colonne A
    j'appelle un formulaire qui me permet de choisir le numéro de session et me l'incrémente
    dans la feuille à l’endroit où j'ai double cliqué. RAS fonctionne très bien

    Je récupère les données de SESSION pour les afficher dans mon combobox

    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
     
    Private Sub UserForm_Initialize()
    ComboBox3.Value = ""
     
    '
    Dim i As Integer
    dernLigne = Sheets("SESSIONS").Range("M" & Rows.Count).End(xlUp).Row
     
    For i = 2 To dernLigne
      ComboBox3 = Sheets("SESSIONS").Range("M" & i)
      If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Sheets("SESSIONS").Range("M" & i)
    Next i
     
     
    End Sub
    J'incrémente après avoir cliqué dans le formulaire

    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
     
    Private Sub CommandButton1_Click()
     
    Ligne = ActiveCell.Row
     
       If Me.ComboBox3 = "" Then
          MsgBox "PAS DE SESSION SELECTIONNEE"
          Me.ComboBox3.SetFocus
          Exit Sub
      End If
     
      With Sheets("INSCRIPTIONS")
        'ligne = .Range("A65000").End(xlUp).Row + 1
        .Cells(Ligne, 1) = Me.ComboBox3
      End With
     
     
    End Sub
    Ma demande :

    j'aimerais compléter le code (validation après avoir cliqué sur le bouton)
    en allant compléter une formule matricielle qui se trouvera dans la feuille SESSION
    sur la même ligne que le n° de session choisi dans le formulaire, on peut donc garder la variable Ligne = activeCellrow.
    il faudrait ajouter le n° de la colonne de ma feuille SESSION qui contient déjà la formule matricielle
    en l'occurrence 14
    et faire en sorte que ma formule matricielle (qui me permet de réaliser un NB.SI avec deux conditions)
    passe de l'état initial :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    {=SI(A3="";"";SOMME((INSCRIPTIONS!I:I="INSCRIT")*(INSCRIPTIONS!A:A="2020 - 10 - 1010 - PSCCHR")*1))}
    à
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    {=SI(A3="";"";SOMME((INSCRIPTIONS!I:I="INSCRIT")*(INSCRIPTIONS!A:A="RECUPERATION CHOIX N° SESSION MENU DEROULANT")*1))}

    en espérant ne pas vous avoir perdu

    Merci d'avance pour vos conseils

    BV

  2. #2
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    1- connais-tu la formule NB.SI.ENS()?
    2- peux-tu placer, dans une cellule quelconque (dans l'exemple : P12), la variable "2020 - 10 - 1010 - PSCCHR" ?

    Ainsi, ta formule devient :
    =SI(A3="";"";SOMME((INSCRIPTIONS!I:I="INSCRIT")*(INSCRIPTIONS!A:A=P12)*1))
    et ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      With Sheets("INSCRIPTIONS")
        'ligne = .Range("A65000").End(xlUp).Row + 1
        .Cells(Ligne, 1) = Me.ComboBox3.Value
        .Range("P12").Value = Me.ComboBox3.Value
      End With
    Cordialement,
    Franck

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Les formules matricielles sont gérées dans VBA avec la propriété FormulaArray.
    Lire ça : https://docs.microsoft.com/fr-fr/off...ectedfrom=MSDN

    Le reste est juste du traitement de chaine de caractère (pour VBA, une formule est juste une chaine de caractère).
    Dans ton cas, la modification pourrait se faire avec une simple fonction Repalce, pour transformer 2020 - 10 - 1010 - PSCCHR en RECUPERATION CHOIX N° SESSION MENU DEROULANT.
    Lire ça : https://docs.microsoft.com/fr-fr/off...place-function
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. Formule matricielle en vba
    Par ledon94 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/05/2018, 19h58
  2. [XL-2007] Formule matricielle en VBA
    Par Franck76Dav dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/04/2017, 11h46
  3. Transformer formule matricielle en VBA
    Par sardaucar dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/01/2017, 09h25
  4. [XL-2010] Formule matricielle et VBA
    Par zaza45 dans le forum Excel
    Réponses: 2
    Dernier message: 24/09/2013, 16h38
  5. [XL-2003] Formule matricielle en VBA
    Par jackall dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/06/2009, 11h24

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