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 :

Boite de dialogue de saisie


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut Boite de dialogue de saisie
    Bonjour,

    Je voudrai a l'aide d'un bouton, ouvrir une boite de dialogue disant "veuillez saisir le numéro d'affaire :" et qui afficherai une zone de saisie pour que l'utilisateur puisse rentrer le numero d'affaire.
    Ensuite, je voudrai pouvoir récupérer ce numéro et le comparer automatiquement a des contenus de cellules afin d'identifier le numero de ligne qui correspond à ce numero.

    Pourriez vous m'aider s'il vous plait ?

    Merci

  2. #2
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bonjour,

    avec un InputBox tu peux saisir des infos tapés par l'utilisateur.
    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub TestInputBox()
        Dim NumeroAffaire
        NumeroAffaire = InputBox("veuillez saisir le numéro d'affaire :")
        MsgBox ("Le numéro d'affaire est le : " & NumeroAffaire)
    End Sub
    Ensuite tu peux utiliser NemuroAffaire pour effectuer ce que tu veux. Mais fais attention, si tu veux réellement un numéro (numérique) l'inputbox renvoie un string.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Merci pour ce morceau de code,
    ça m'a l'aire de fonctionner parfaitement.
    Cependant comment lancer cette fonction a partir d'un bouton ?

    Merci

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    J'ai trouvé en utilisant les boutons de la barre d'outil formulaire puis click droit et affecter une macro.

    Maintenant j'aimerai comparer la la chaine saisie par l'utilisateur à des valeur contenue dan la colonne A.

    Comment faire ?

    Merci

  5. #5
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Et bien,

    après avoir ajouté un module avec Sub TestInputBox()
    Tu peux double-cliquer sur le bouton (qui affichera le code automatiquement) ou dans le code de la feuille (où est le bouton) ajourter le code manuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_Click()
        Call TestInputBox
    End Sub
    En cliquant sur le bouton, TestInputBox (qui se trouve dans un module) sera appelé!

  6. #6
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    As-tu commencé un code?

    Je pourrais t'écrire le code mais il serait préférable que tu le fasses par toi même! Expliques un peu plus la métode de comparaison.
    Connais-tu le nombre de données dans la colonne A? Est-ce qu'il peut se retrouver plus d'une fois? S'il est absent, veux-tu l'ajouter à la suite?

    Avec ces questions, tu peux au moins un Algo de ton code, et si tu as des questions tu pouras les poser au fur et à mesure!

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Je ne connais pas grand chose en VBA.
    Je progresse en m'appuyant sur des exemple précis et en adaptant ces exemples à mes besoins.
    Donc je suis encore dans l'incapacité de rédiger un code par moi même.
    Merci de votre compréhension.
    En fait, dans ma colonne A j'ai quelques lignes ou je retrouve mes numerodaffaire qui sont du type : "O1027" (au-1-zero-27).
    Ce numéro ne peut être présent qu'une seule fois.
    Quand l'utilisateur rentre le numéro, je voudrais que le code le compare à ceux existants dans ma colonne A et qu'à partir du résultat il fasse :
    - il trouve le numéro : renvoyer le numéro de la ligne correspondante.
    - il ne trouve pas : informer l'utilisateur et lui demander de rentrer un nouveau
    numero ou d'abandonner.

    Merci pour votre aide.

  8. #8
    Membre habitué Avatar de BERRACHED SAID
    Inscrit en
    Janvier 2009
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 63

    Informations forums :
    Inscription : Janvier 2009
    Messages : 192
    Points : 125
    Points
    125
    Par défaut
    Salut,Djey51,drakkar_agfa

    Une exemple de ce que vous chercher j'espére qui repond a vos attentes.

    Cordialement
    Fichiers attachés Fichiers attachés

  9. #9
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    J'aime bien l'exemple avec les userform et tout!
    Complet!

    Mais j'ai travaillé sur ceci :
    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
    26
    27
    28
    29
    30
    31
    32
    Sub TestInputBox()
        Dim NumeroAffaire
        Dim shA As Worksheet
        Dim Message As String
        Dim c As Range
    '   Déclaration de la feuille
        Set shA = ActiveSheet
     
    '   Demande le numéro d'affaire à rechercher. Si il est vide, quitte la procédure.
        NumeroAffaire = InputBox("veuillez saisir le numéro d'affaire :")
        If NumeroAffaire = False Or NumeroAffaire = "" Then
            MsgBox "Annulé"
            Exit Sub
        End If
     
    '   Utilisation du With, pas besoin de répéter shA.Range("A:A") à chaque fois. Quand on
    '   écrit .quelque chose, il fait référence au With.
        With shA.Range("A:A")
    '       Le Find recherche dans le Range du with la valeur entrée dans NumeroAffaire
            Set c = .Find(NumeroAffaire, LookIn:=xlValues, LookAt:=xlWhole)
            If Not c Is Nothing Then
    '           Si trouvé, alors :
                Message = "Le numéro de ligne de '" & NumeroAffaire & "' est : " & c.Row
            Else
    '           Si pas trouvé, alors :
                Message = "Le numéro d'affaire '" & NumeroAffaire & "' n'existe pas."
            End If
        End With
    '   Affiche le message.
        MsgBox Message
     
    End Sub

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup BERRACHED SAID, c'est impressionnant mais un peu complexe pour moi pour que je puisse l'adapter à mon problème.

    Merci drakkar agfa, tu as compris exactement ce dont j'avais besoin et en plus tout tes commentaires me permettent de "bien" comprendre ton code et donc de progresser.
    c'est parfait pour ce que je t'ai demandé.
    Maintenant, corson un peu l'affaire

    J'aurai besoin de la même chose, sauf :
    en fait, le numéro d'affaire est bien dans la colonne A sauf qu'il correspon a plusieurs lignes qui ont été fusionnées.
    Le code que tu m'as fourni me retourne le numéro de la première ligne rencontrée. Est -il possible qu'il me retourne le numéro de la dernière ligne rencontrée ? ça serai parfait.

    Encore merci pour votre aide et votre patiente.

  11. #11
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    De la dernière ligne rencontré?
    Dans la colonne A? Tu as dit plustot qu'une seule valeur possible, qu'il n'a pas de doublons. Alors pourquoi prendre le dernier et pas le premier??? C'est le même s'il en a seulement 1, non?

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Cette valeur ne se rencontre qu'une seule fois : ça c'est clair.
    Par contre elle peut se trouver sur plusieurs lignes fusionnées..
    je m'explique avec un schéma exemple :
    ____A_____B______C
    ---------
    1 O1027
    ---------
    2
    3 O1227
    4
    ---------
    Pour le numérodaffaire O1027, pas de problème, votre code me retourne 1.
    Parcontre, pour le O1227 qui ne se trouve qu'une seule fois mais dans un ensemble de case fusionnées : ici la fusion des cellules A2:A4.
    dans ce cas, votre code me renvoie 2 et j'aimerai qu'il me renvoi 4 à la place.


    Est-ce que j'ai été plus clair ?

    en tout cas merci

  13. #13
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Je crois que j'ai une solution.
    Mais je m'en vais sur mon heure de diner alors je vais poster en début d'après-midi. Je vais tester quelques trucs avec offset!

    Ce petit bout de code va utiliser plusieurs techniques! Pratique pour apprendre!

  14. #14
    Membre confirmé Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Points : 638
    Points
    638
    Par défaut
    Bon, et bien tout fonctionne avec ceci!
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Message = "Le numéro de ligne de '" & NumeroAffaire & "' est : " & c.Row
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Message = "Le numéro de ligne de '" & NumeroAffaire & "' est : " & c.Offset(1, 0).Row - 1
    et tu auras la dernière ligne dans le cas de cellules fusionnées!

    P.S. Le c.Offset(ligne,colonne) te permet de deplacer le range.
    Dans ce cas ci, je déplace d'une case par le bas et je fais -1 pour obtenir la dernière ligne de la case recherchée!

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup ceci fonctionne très bien.

    J'ai bientôt fini ce que je veux faire.

    Avec le numéro de ligne (12 par exemple) que je récupère, j'insère une nouvelle ligne juste en dessous (13). j'arrive a fusionner les cases de certaines colonnes (celles que j'ai choisi : G12 et G13 par exemple) mais il me reste un petit probleme.
    J'ai une case G (qui peut contenir plusieurs cellules fusionnées d'une même colonne: G = G10;G11;G12 fusionnées par exemple). dans cette case se trouve une formule qui fait appel au cellules voisine F10; F11 et F12 qui elles ne sont pas fusionnées.
    Quand j'insère ma ligne 13, je fusionne les cellules G12 et G13 qui ne forme plus qu'une seule case contenant ma formule. j'inscris ma nouvelle valeur dans la cellule F13. C'est là qu'intervient mon problème, la formule de la Case G10:G13 ne prend pas automatiquement la valeur de la case F13.
    Voili voilou,

    si tu as une idée, elle sera la bienvenue

    Merci

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 47
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Merci pour tout,
    j'ai réussi à m'en sortir avec toutes tes indications et un peu de recherche pour la fin.

    Bonne journée à tous

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

Discussions similaires

  1. [XL-2010] Controler la saisie dans un tableau par une boite de dialogue
    Par narjissio dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/03/2015, 12h16
  2. Réponses: 4
    Dernier message: 22/10/2013, 19h21
  3. boite de dialogue pour saisie auto
    Par beebe dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/07/2008, 11h40
  4. Boite de dialogue avec zone de saisie
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/06/2007, 18h09
  5. Boite de dialogue de saisie
    Par azad_892000 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/04/2007, 14h57

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