Variable dans une fonction

Bonjour le forum,

Par un msgbox je souhaiterais demander à ce que l'on rentre un mot
par exemple "Divers" et que ce mot s'inscrive dans la fonction sommeprod
autrement dit je souhaiterais mettre une variable à la place de "Divers" dans la fonction pour avoir le choix du mot à entrer

et pouvoir placer le résultat de sommeprod dans une textbox

=SOMMEPROD((F6:F13="Divers")*(I6:I13))

Pouvez vous m'aider s'il vous plait

Merci

<config>Windows 8.1 excel 7

34 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

La problématique concerne la saisie dynamique d'un mot par l'utilisateur pour remplacer le texte 'Divers' dans une fonction SOMMEPROD et afficher le résultat dans une textbox. Des échanges suggèrent d'utiliser une InputBox plutôt qu'une MsgBox pour obtenir la saisie, afin d'alimenter la variable utilisée par la fonction et d'éviter le texte constant. Le fil évoque aussi des échanges techniques sur des dépendances OCX et des scripts système liés à l'environnement Windows, bien que ces points ne semblent pas directement liés à la saisie utilisateur. En cas de besoin, les liens fournis partent de mises en œuvre pratiques et d'essais sur des postes différents, sans conclure à une solution unique.

Bobot (l’IA à votre service)
  1. Contributeur
    Bonjour
    Par un msgbox je souhaiterais demander à ce que l'on rentre un mot
    ce ne serait ce pas plutôt un inputbox ?
    1. Oui Michel Inputbox

      sorry
      1. Michel
        j'ai adapté ce code
        Private Sub CommandButton4_Click()
        Application.Visible = True

        Dim Plage1 As String, Plage2 As String
        Dim Chaine As String
        Plage1 = Range("F6:F60000").Address
        Plage2 = Range("g6:g60000").Address
        'Chaine = "Manif1"
        Chaine = InputBox("Entrer un nom")
        Range("C13") = Evaluate("Sumproduct(" & Plage2 & "*(" & Plage1 & "=""" & Chaine & """))")

        'end with
        TextBox1 = Chaine
        TextBox2 = Sheets("journalbord").Range("C13")

        End Sub

        mais chaine peut avoir jusqu'à 6 ou 7 valeurs
        il y a donc une boucle à faire n'est ce pas ?
      2. Contributeur
        @max850Bonjour,

        pas trop le temps ce matin....

        Tu annonces 60000 lignes et à ce niveau sumproduct sera très lent..
        dans ta première demande tu parles de la colonne I et maintenant colonne G le tout sur 7 lignes....
        On ne raisonne pas du tout de la m^me façon suivant le nombre de lignes !

        Il serait intéressant que tu donnes la liste des mots ou mieux de mettre cette liste dans une validation de données plus sécuritaire qu'un input box

        le + intéressant serait de

        Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
        et faire un clic droit-coller le raccourci dans votre message

        Dans l’attente
      3. @michel_mBonjour michel-m
        et te remercie beaucoup du temps que tu me consacres
        j'ai tenu compte de tes remarques concernant la sécurité
        j'ai donc abandonné le inputbox au profit des combobox d'autant plus que la liste des activités éxiste déjà dans ma feuille1 de variables
        il y a peut être un autre moyen ??
        concernant les 60000 lignes : en fait il n'y aura jamais plus de 10 lignes voire 12 puisqu'il s'agit des activités
        dans le userform2 je pourrais donc avoir le montant des recettes et dépenses par activité
        via un bouton
        serait il possible d'afficher simultanément les recettes et les dépenses de toutes les activités réalisées pour ne pas à avoir à les entrer une par une toujours via un bouton?
        (Dans l'exemple j'ai juste fait dépense pour une activité)

        https://mon-partage.fr/f/TJrrwGyh/

        Merci
    2. Contributeur
      Je viens de jeter un œil et je n'y comprend rien

      déjà on ne sait pas de quelle feuille provient plage1 et plage2...

      en 1° ligne j'ai le nom de cette activité qui apparait en 1° ligne dans le textbox "entrée".... ?

      Comme il n'y a pas d'exemples activité -recette ou dépenses (où ?), il est difficile de rentrer dans une étude de solution...
      1. plage1 et plage2 viennent de la feuille "journalbord"
        jai modifié de la façon suivante

        mafeuille = Sheets("journalbord").Range("C13")

        mafeuille = Evaluate("Sumproduct(" & Plage2 & "*(" & Plage1 & "=""" & Chaine & """))")

        Dans le menu principal en cliquant sur Journal de bord je peux compléter
        la feuille"journal dépense". En cliquant sur le bouton valider je retrouve ces infos dans la feuille "journalbord"
        je reviens au menu principal je sélectionne mon activité et en cliquant sur Bilan par activité j'ai la somme qui s'affiche dans la textbox.

        Mais je viens de m'percevoir qu'en rentrant plusieurs activités dans ma feuille journaldepense il y a toujours la meme somme qui s'affiche dans la textbox du bilan par activité
        j'ai sans doute un problème dans ma formule Evaluate
        1. Michel-m je t'envoie un nouveau fichier que j'ai un peu modifié
          peut être y verras tu un peu plus clair

          merci

          https://mon-partage.fr/f/GEUBI7dj
      2. Bonjour
        j'ais modifier un peux ton userform1

        http://www.cjoint.com/c/GBwuOxqHhMd
        A+
        Maurice
        1. Bonjour Maurice je ne parviens pas à ouvrir ton fichier
          1. Maurice j'ai un message d'erreur : erreur de compilation
            projet ou bibliotheque introuvable
            Dans le cadre référence vba project
            j'ai : manquant : microsoft windows common controls 6.0
            (sp6)
        2. ok Maurice
          tu m' as devancé
          je suis allé dans références et j'ai décoché le manquant : microsoft ..
          et ai coché la ligne du dessous qui avait exactement le même libellé excepté manquant et ca marche maintenant
          je reviens vers toi pour te dire quoi au sujet de ton userform
          merci
          1. Maurice il me semble que la deuxième sans listview est plus rapide
            en tous les cas la présentation du userform est plus légère et c'est celle que je préfère
            dans les deux exemples j'ai juste apporté une modif
            pour avoir le plan comptable correspondant à la checkbox

            dans ce userform1 j'obtiens le numéro de la pièce en le sélectionnant avec la combobox correspondante
            Serait il possible d'utiliser disons la variable 100 qui se trouve dans la colonne k1 de la feuille de variable feuil1 pour qu'elle s'incrémente automatiquement de +1 et placer ce nouveau nr dans la textbox12 . A chaque lancement du userform j'aurais donc 100 ensuite 101 102 etc ....
            merci
            1. Bonjour

              regarde aussi UserForm5
              http://www.cjoint.com/c/GBxpVkz7hKl

              A+
              Maurice
              1. Super Maurice
                j'avais utiliser cela

                ' **** remplace: [Private Sub CommandButton2_Click()]
                Private Sub cmdeValider_Click()
                Application.Visible = True
                Static Compteur As Long
                Compteur = Compteur + 1
                TextBox12.Value = Compteur

                mais je ne faisais plus appel à ma variable dans feuil1

                Ta solution me convient parfaitement

                Merci Maurice tu es un vrai chef
                Pour moi ce sera tout pour ce soir
                1. Bonjour
                  Voila encore une modife
                  http://www.cjoint.com/c/GByjXqeK2f8

                  A+
                  Maurice
                  1. Bonjor Maurice
                    merci our ton nouveau fichier

                    voilà ce qie j'ai fait ce matin
                    comme je n'ai que deux alternatives entre bqe et cais

                    En utilisant ton dernier modèle d'hier

                    j'ai rendu textbox10 et combobox3 invisible
                    pour nes avoir d'erreur
                    et ai modifie le textbox17_change de la façon suivante

                    https://www.cjoint.com/c/GBynuM4ZsXu

                    Private Sub textbox17_change()

                    If TextBox17.Value = "Chèque" Or TextBox17.Value = "Virement" Then
                    TextBox19.Value = "BQE" & Feuil1.Range("K1").Value + 1
                    Else
                    TextBox19.Value = "CAI" & Feuil1.Range("K1").Value + 1
                    End If
                    TextBox19.Locked = True
                    1. Bonjour
                      encore des modifes
                      et aussi dans UserForm2
                      http://www.cjoint.com/c/GBypAAtJIv8
                      A+
                      Maurice
                      1. Merci Maurice pour ces modifs
                        en particuliers le select case et Compte recettes par défaut
                        j'ai un petit soucis avec le userform1
                        lorsque je clique sur Quelle activité txt9 combo8
                        l'activité s'affiche dans la txtbox 17 combo 10 en lieu et place
                        de moyen de règlement et en modifiant les 3 premiers caractères de la
                        ref pièce
                        je cherche tout cela provient mais tu auras beacoup plus vite fait que moi

                        j'ai également enlevé le premier contrôle sous "if checkbox1.value ..
                        1. Bonsoir
                          voila la modife
                          mes tu devrais refaire ton userform
                          http://www.cjoint.com/c/GByu016jOx8
                          A+
                          Maurice
                          1. Bonsoir Maurice
                            Ai modifié ta dernière modife pour lire dans le
                            Select case
                            Case else
                            textbox6.locked = true
                            Ref = "CAI"

                            pour que l'on puisse rien inscrire dans ce champ
                            lorsqu'il s'agit d'une opération de caisse

                            j'ai supprimé le label qui ne servait plus sur le userform1
                            je vais mieux présenté ce userform.
                            j'ai fait également le ménage dans le code
                            je vais maintenant finaliser ce userform1 avant de poursuivre dans le userform2 etc .....
                            j'aurai sûrement encore besoin de tes lumières .......
                            merci une novelle fois maurice
                            1. Bonjour
                              Voila un model de gestion plus simple en saisie
                              http://www.cjoint.com/c/GBAkS2fNGpn
                              bon courage
                              A+
                              Maurice
                              1. Bonjour Maurice
                                j'ai chargé les Windows common controls 6.0(sp6)
                                les controles commun vb6.0 ont té installé avec succès
                                Mais en ouvrant ton fichier j'ai un problème avec le DTPICKER1
                                En regardant dans sysWOW64 j'ai bien MSCOMCTL.OCX mais pas de trace de MSCOMCT2.OCX
                                Comment puis je résoudre ce problème ?
                                merci
                                • 1
                                • 2