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

Excel Discussion :

Intégrer une saisie de valeur a une fonction et la reporter dans une cellule [XL-2010]


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut Intégrer une saisie de valeur a une fonction et la reporter dans une cellule
    Bonjour,

    Je suis sous excel 2010, et pas moyen de réussir a obtenir ce que je veux !

    Alors voilà, j'ai 3 cellules, on va dire que ce sont les cellules A1,A2 etA3.



    En résumé, voici ce que je souhaite obtenir :

    - je scanne mon code barre EAN13 dans A1
    - la fenêtre s'ouvre et me demande un prix
    - je donne le prix et valide l'entrée
    - la fenêtre se referme et le prix donné va se loger tout seul dans A2
    - la fenêtre A3 se met a jour toute seule et va automatiquement chercher le texte du produit correspondant au code barre apparait dans A3 (je vais le chercher dans une autre feuille) grâce a une fonction que j'ai crée (c'est fait, elle est crée et elle marche).





    Après que le code barre ai été entré (avec appui automatique sur la touche entrée a la fin de la lecture du code barre) , je souhaiterais faire apparaitre une fenêtre qui me demande une valeur de prix, et cette valeur irait se loger dans A2 une fois le OK de la fenêtre validé.


    J'ai été capable de faire une macro qui fait ça, et ça fonctionne très bien, mais a partir du moment ou j'essaye de faire la même chose dans la fonction utilisée dans A3 ... ça foire systématiquement !



    Est-ce que quelqu'un saurait comment faire ?

    Là, je crois que j'ai atteint les limites de mes connaissances sur excel ! :/


    Merci d'avance !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    - la fenêtre A3 se met a jour toute seule et va automatiquement chercher le texte du produit correspondant au code barre apparait dans A3 (je vais le chercher dans une autre feuille) grâce a une fonction que j'ai crée (c'est fait, elle est crée et elle marche).
    Si vos données sont déjà existantes (code barre, libellé, prix) dans une autre feuille, la solution par une fonction RECHERCHEV pour récupérer le libellé et le prix est suffisante.


    Sinon, par rapport à votre demande, une solution est possible avec la macro événementielle suivante à placer dans le module de votre feuille de saisie :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim Continuer As Boolean
     
       If Target.Count > 1 Then Exit Sub
     
       If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
     
              If Target <> "" Then
     
                    Continuer = False
                    UserForm1.Show  ' Dans Userform1 : bouton Valider -> Continuer = True, bouton Abandonner -> Continuer = False
     
                    If Continuer = True Then  Macro1 ' Eventuellement
     
              End If
     
       End If
     
    End Sub

    Cordialement.

  3. #3
    Membre averti Avatar de XLRATOR
    Homme Profil pro
    Comptable Analyste
    Inscrit en
    Août 2012
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Comptable Analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 226
    Points : 356
    Points
    356
    Par défaut
    Bonjour,
    Comme tu peux utiliser la fonction Inputbox qui affiche une fenêtre standard où tu peux insérer ton prix dés qu'une cellule de la colonne B soit sélectionnée.
    Quant à la recupérations des noms de produits en fonction des code à barres, il ne doit pas y avoir mieux que ce que suggérre Eric, La Fonction RechercheV (Vlookup en anglais).

    Un Exemple de InputBox:
    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
    Dim OldValue
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    OldValue = Target.Value
    If Target.Column = 2 Then
        If Target.Offset(0, -1).Value <> "" Then
        Dim Ip
        Ip = InputBox("Veuillez introduire un prix à ce produit.", "Prix du Produit")
            If Ip = "" Then
            Target.Value = OldValue
            Else
            Target.Value = Ip
            End If
        End If
    End If
    End Sub
    Cordialement.
    Karim.
    Entre la canne à pèche et le poisson c'est certainement la canne que je choisirais, puis apprendrais à m'en servir.
    Si on vous souffle une solution au complet c'est que vous n'auriez rien compris du problème.
    Consultez la , de forte chances que votre problème y figure et c'est plus vite que de poser une question et en attendre la réponse.
    FAQ Excel: http://excel.developpez.com/faq/

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci Eric et Karim !

    Je viens de créer une nouvelle feuille pour faire des tests, et j'ai essayé séparément vos codes, mais ... rien ne se passe quand je remplis la cellule A1, ou quoi que je fasse ! :/

    Pourriez-vous m'indiquer quoi faire ?

    J'ai sûrement raté une étape, mais je ne sais pas laquelle.

    Ça fait moins d'une semaine que j'ai découvert le VBA sur excel, alors j'apprends ! ^^

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mettez en ligne un fichier exemple de ce que vous voulez faire sans les données confidentielles.

    Cordialement.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Je vous joint le fichier dans ce message, mais ne pouvant pas envoyer le fichier avec les macros (le site refuse), je vous envoie le fichier et le code séparément.

    J'ai mis 10 articles fictifs et crée une macro tout bête qui s’appelle " macro " destinée a mettre la valeur 5 dans la cellule [A2].
    Fichiers attachés Fichiers attachés

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Aspres Voir le message
    Je vous joint le fichier dans ce message, mais ne pouvant pas envoyer le fichier avec les macros (le site refuse), je vous envoie le fichier et le code séparément.

    [A2].
    Pour transmettre votre fichier .xlsm : clic droit dans l'explorateur Windows, Envoyer vers dossier compressé pour le ziper.

    Sinon, vous transformez votre fichier en Excel 1997-2003 si pas de problème de compatibilité descendante (souvent la plupart des cas).

    Cordialement.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci ! Voilà le bon fichier sous zip !!!
    Fichiers attachés Fichiers attachés

  9. #9
    Invité
    Invité(e)
    Par défaut
    Ci-joint votre fichier complété avec la macro événementielle indiquée ce matin. Celle-ci porte sur la colonne A à partir de la cellule A5.

    La mise à jour du prix et du libellé peut se faire avec des fonctions Index équivalent. Voir également la liste dynamique pour vos codes barres .

    Cordialement.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci Eric et a chacun de vous de m'avoir consacré du temps !

    Je vais étudier tout ça pour comprendre et digérer les solutions proposées, et au besoin, je reviendrais vers vous pour vous demander a nouveau un peu d'aide.

    Merci encore !

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Re-Bonjour,

    Je me suis peut-t-être un peu trop dispersé en donnant trop de détails sur les différentes fonctions de mon projet.

    Je vais vais essayer de reposer le problème de manière plus simple sur ce que j'essaye de faire.



    Je remplis A1 avec une valeur quelconque, et je valide avec entrée le contenu de cette cellule.
    Une fenêtre s'ouvre, et me demande une valeur.
    J'entre une valeur, je valide, et cette valeur va s'écrire toute seule dans A2.



    Voilà, c'est tout !




    J'arrive a faire ça en créant une macro, mais la macro doit être lancée a la main, et je souhaite que ça se lance tout seul quand j'ai validé A1.



    Par contre, j'ai noté avec attention l'événement que vous m'avez indiqué, l'événement qui se déclenche au moment ou une cellule est modifiée, et je pense que c'est la clef de mon problème.

    Mais mon problème, c'est que lorsque je tente d'insérer ou d'utiliser cette fonction dans une feuille vierge, ça ne marche jamais. :/

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Aspres Voir le message
    Mais mon problème, c'est que lorsque je tente d'insérer ou d'utiliser cette fonction dans une feuille vierge, ça ne marche jamais. :/
    La macro événementielle est indissociable de la feuille. Il vous suffit de créer une feuille modèle contenant cette macro et chaque fois que vous aurez besoin d'une nouvelle feuille, vous dupliquerez cette feuille modèle.

    Cordialement.

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si un événement se produisant sur une feuille doit être utilisée sur plusieurs feuilles, Il est possible d'utiliser les procédures événementielles du classeur préfixées Workbook_Sheet
    Exemple avec Workbook_SheetChange où tout changement effectué sur n'importe quelle cellule de n'importe quelle feuille exceptée celle nommée [Param] est intercepté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
      If Sh.Name <> "Param" Then
        MsgBox "Vous avez modifié la cellule " & Target.Address & " de la feuille " & Sh.Name
      End If
    End Sub
    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

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Merci Philippe !

    Votre solution est la clef qui résoudra mes problèmes, mais voilà, quand j'utilise ce code (ou un code équivalent basé sur la même idée) en le mettant dans un nouveau fichier excel, rien ne fonctionne.

    J’insère des valeurs dans n'importe quelle cellule, et rien ne se passe. :/

    Normalement, ça devrait fonctionner, et pourtant, rien ne fonctionne.

    Qu-ai-je bien pu oublier pour que rien ne fonctionne ?

  15. #15
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce code doit être placé dans l'objet ThisWorkbook et le classeur excel doit être sauvé sous le suffixe [B]xlsM/B] (classeur prenant en charge les macros) ou sous format Excel 97-2003.
    Est-ce le cas ?
    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

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bien vu Philippe !

    Je n'avais pas sauvegardé le code dans " ThisWorkbook ", c'est a cause de ça que ça ne marchait pas !

    Merci !

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Points : 1
    Points
    1
    Par défaut
    Bon, voici mon code final, et tout marche très bien !

    Merci beaucoup !

    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
    Dim OldValue
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
      If Sh.Name = "Carte de fidélité" Then
       If (Target.Column = 7) Or (Target.Column = 13) Or (Target.Column = 19) Or (Target.Column = 25) Or (Target.Column = 31) Or (Target.Column = 37) Or (Target.Column = 43) Or (Target.Column = 49) Or (Target.Column = 55) Or (Target.Column = 61) Then
     
    prix = Application.InputBox(prompt:="Quel est le prix ?", Type:=1)
     
    ligne = ActiveCell.Row
    colonne = ActiveCell.Column
     
    Sheets("Carte de fidélité").Cells(ligne - 1, colonne + 1) = prix
     
    Set Cellule = Cells(ligne - 1, colonne)
     
       End If
      End If
     
    End Sub

  18. #18
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Si l'événement doit être intercepté seulement sur la feuille nommée [Carte de fidélité]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Sh.Name = "Carte de fidélité"
    Alors la proposition faites par Eric est celle à privilégiée.
    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

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 20/03/2015, 10h27
  2. Réponses: 5
    Dernier message: 12/03/2015, 16h32
  3. faire une somme de valeurs avec la fonction SumIf
    Par Iichham dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/08/2011, 12h09
  4. Réponses: 2
    Dernier message: 09/11/2007, 10h18
  5. Réponses: 7
    Dernier message: 30/07/2007, 10h26

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