Excel VBA userform

Résolu
anthony -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Comment faut il procéder pour que la macro qui fonctionne en la lançant manuellement soit accessible directement via une page d'accueil avec le user form créé ?
http://www.cijoint.fr/cjlink.php?file=cj201101/cijuc4eaWR.xls
à la place de la boîte de saisie je souhaiterais que ce soit la 1ère case du user form et le résultat s'affiche dans la seconde au lieu de la boîte de dialogue

merci à vous

5 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Essaye ceci. Pour "lancer" l'UserForm : ALT+F8 choisir "Lancement_UserForm" et Exécuter...
    Pour info, j'utilise la méthode find pour chercher le contenu du textbox1 :
    Private Sub CommandButton2_Click()
    'déclaration des variables
    Dim Trouve As Range
    Dim Valeur_cherchee As String
    'Si pas de saisie alors on quitte la procédure avec message à l'utilisateur
    If TextBox1 = "" Then
        MsgBox "Veuillez saisir un numéro de produit"
        Exit Sub
    End If
    'Valeur_cherchee est la variable, contenue dans textbox1, que l'on va chercher
    'dans la feuille "Serie-masques" Colonne 1 (A) avec la méthode find
    Valeur_cherchee = TextBox1.Value
    'ici trouve représente la cellule ou l'on a trouvé (ou pas) le n° de produit
        Set Trouve = Sheets("Serie-masques").Columns(1).Cells.Find(what:=Valeur_cherchee)
            'si le numéro n'existe pas message à l'utilisateur
            If Trouve Is Nothing Then
                MsgBox "Numéro de produit inconnu"
            Else
            'Si le numéro existe alors on met la valeur de la cellule voisine colonne C
                TextBox2.Value = Trouve.Offset(0, 2).Value
            End If
    Set Trouve = Nothing
    End Sub
    0
  2. anthony
     
    YEEEEEES
    trop fort, ça fonctionne nickel,
    j'ai juste modifié
    TextBox2.Value = Trouve.Offset(0, 2).Value en
    TextBox2.Value = Trouve.Offset(0, 1).Value pour obtenir la série

    merci beaucoup pijaku
    j'essayais de faire autrement qu'avec l fonction vlookup car ça buggait
    0
  3. anthony
     
    mince ça n'a pas pris mon message précédent.
    j'ai un soucis, si je note 22 par exemple, ça m'affiche une valeur alors que le produit n°22 n'existe pas. comment peut on être sûr que la valeur affichée est la bonne ?
    0
  4. anthony
     
    bon je n'ai rien dit, je suis tombé sur LE cas particulier qu'est 22 car en testant d'autres nombres ça n'affiche rien, dans le genre je mets le doigt sur le truc différent, je suis pas mauvais.

    merci à toi, excellent travail
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,
      Si tu as une référence comme : 22456 et que tu saisis 22, c'est normal qu'il te trouve quelque chose... Il trouve ton 22 dans la chaîne 22456...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. anthony
     
    Bonjour,
    l'application est très appréciée des utilisateurs ;-) bravo

    j'ai une question.
    Une fois la série trouvée et affichée, il faudrait à partir du bouton "everest" que le programme everest s'ouvre (C:\Documents and Settings\All Users\Documents\everest.exe) et que la fenêtre permettant de sélectionner le fichier à charger soit à l'écran pour éviter de perdre du temps dans l'arborescence des répertoires.

    par contre les choses sont complexes car les fichiers à charger ne sont pas dans un même répertoire mais dans des sous-répertoires de cette cible :
    X:\CAD\Export_Data\Fichiers_Testeurs
    X:\CAD\Export_Data\Fichiers_Testeurs\D1200_1224\1216

    Si par exemple on obtient la série 1216 avec ta macro, il faut ouvrir everest, choisir open, se rendre ici X:\CAD\Export_Data\Fichiers_Testeurs, ouvrir le dossier D1200_1224 car 1216 est bien compris entre 1200 et 1224, et ensuite ouvrir le dossier 1216 et là on tombe sur 3 ou 4 fichiers et l'utilisateur n'aurait plus qu'à choisir celui qui l'intéresse.

    en gros il faudrait qu'il y ait comme un search dans le répertoire global
    X:\CAD\Export_Data\Fichiers_Testeurs avec le critère du numéro de série et hop on accède aux 3-4 fichiers

    Penses tu que ce soit réalisable ? et de quelle manière ?

    http://www.cijoint.fr/cjlink.php?file=cj201101/cijvlZ3Ras.xls
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut,
      Je ne sais pas si ce que tu demandes est faisable...
      Je vais voir si quelqu'un de plus compétent peux prendre le relais...
      A+
      0
    2. anthony
       
      ok je vais créer un sujet
      0
    3. anthony
       
      Bonsoir pijaku, l'effet domino de ton code, maintenant les utilisateurs ont fait la demande d'avoir un fichier actualisé par jour. ça se déroulerait ainsi, la feuille serie masque serait le fichier journalier et il faudrait à partir de la page d'accueil contenant le user form,
      soit allez piocher le numéro de série dans ce fichier sans l'ouvrir (il sera tjs au même endroit et tjs avec le même nom)
      soit faire un import des nouvelles données dans le fichier du user form, sur la feuille serie masque en écrasant les lignes.
      tu saurais comment faire l'une des deux méthodes ?
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bonjour,
      Ta question mérite l'ouverture d'un nouveau sujet...
      0