Recherche vba

tuxy88 Messages postés 11 Statut Membre -  
 tux88 -
Bonjour à toutes et à tous,

J'aimerai lorsque j'inscris un numéro dans TextBox1 d'un userform, que ce numéro soit recherché dans la colonne A de la feuille 1 et ainsi, mettre les données de mon userform (de Textbox2, TextBox3,...) dans la colonne H,I,... de cette même feuille 1.
Ceci afin de faire coincïder sur la meme feuille excel la préparation et l'utilisation d'un mélange appelé 1 par exemple.

Je ne sais pas si cela est possible :/

Merci d'avance

Cordialement,

Pierrick

7 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir

    Oui c'est possible

    Tu as du mettre un bouton de validation sur ton userform

    Dans le code du bouton tu mets une macro de ce style :

    Private Sub CommandButton1_Click()
    On Error GoTo erreur 'gestion de l'erreur si reference non trouvée
    a = UserForm1.TextBox1.Value 'récupération de la donnée en Textbox1
    ligne = Application.Match(a, Range("A1:A30"), 0) 'recherche de cette donnée dans la plage A1:A30 - renvoie le n° de ligne où est la donnée
    b = UserForm1.TextBox2.Value ' récupération de la donnée Textbox2
    ActiveSheet.Range("H" & ligne) = b ' écriture de cette donnée en colonne H et même ligne que la donnée de Textbox1
    Exit Sub ' sortie
    erreur: ' gestion de l'erreur sin donnée non trouvée par affichage d'un message
    MsgBox ("Cette valeur n'existe pas dans la colonne A")
    End Sub

    A adapter et à compléter selon tes besoins

    Cdlmnt
    1
  2. tuxy88 Messages postés 11 Statut Membre
     
    Merci beaucoup, je vais tester ça tout de suite :)

    Bonne soirée ;)
    0
  3. tuxy88 Messages postés 11 Statut Membre
     
    Juste exceptionnelle ta réponse!!!

    Très bonne soirée à toi ;)

    PS : comment on met en résolu?
    0
  4. tuxy88 Messages postés 11 Statut Membre
     
    Re Bonsoir,

    J'ai une petite question :

    Comment vba fais pour envoyer sur la bonne feuille ??? Sachant que nul part dans mon code je n'ai écrit sur quelle feuille il doit envoyer les données

    Voici mon code au complet :

    Private Sub UserForm_Initialize()
    heure.Value = Time
    dat.Value = Date
    End Sub

    Private Sub CommandButton1_Click()
    a = UserForm3.Numéro.Value
    ligne = Application.Match(a, Range("A1:A65536"), 0)
    b = UserForm3.dat.Value
    ActiveSheet.Range("O" & ligne) = b
    c = UserForm3.heure.Value
    ligne = Application.Match(a, Range("A1:A65536"), 0)
    ActiveSheet.Range("P" & ligne) = c
    d = UserForm3.nom.Value
    ligne = Application.Match(a, Range("A1:A65536"), 0)
    ActiveSheet.Range("Q" & ligne) = d
    e = UserForm3.quantité.Value
    ligne = Application.Match(a, Range("A1:A65536"), 0)
    ActiveSheet.Range("R" & ligne) = e
    CommandButton1.Visible = False
    CommandButton2.Visible = False
    UserForm3.PrintForm
    Unload Me
    End Sub

    Private Sub CommandButton2_Click()
    Unload Me
    End Sub

    Cordialement

    Bonne soirée
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tuxy88 Messages postés 11 Statut Membre
     
    J'ai trouvé lol

    Au lieu de activesheets, je mets Worksheets("la feuille que je veux")

    et hop c'est parti!!!

    Tchou tchou et encore merci
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Et voila :

      tu peux même ecrire Sheets("mafeuile") ou sheets(n) dans lequel n est le rang de la feuille (pratique dans une boucle For Next pour atteindre successivement la 2eme, 3eme et 4eme feuille par exemple

      Bonne suite
      0
  7. tuxy88 Messages postés 11 Statut Membre
     
    Bonsoir,

    C'est moi que revoilà...lol

    J'ai un soucis! En fait ça ne marche pas non plus le code si la feuille sur laquelle j'envoie les données n'est pas la feuille active :/

    Est-ce qu'il y a une solution à mon problème?

    De plus pour le code actuel, je ne mets pas "ligne = Application.Match(a, Range("A1:A65536"), 0)" dans b,c,d et e

    Bonne soirée

    ++
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Je ne comprends pas bien où est le souci !

      Pour envoyer vers une autre feuille exemple :

      Sheets("Feuil3").Range("H" & ligne) = UserForm1.TextBox2.Value

      En ayant ouvert l'userform à partir de n importe quelle feuille cette ligne de code inscrit bien la valeur du Texbox2 de l'Userform dans la cellule H et ligne (déterminée avant avec la procédure) de la Feuil3

      Tu peux poster un exemple de ton fichier allégé et anonymé sur cjoint.com et indiquer ici ensuite le lien fourni en précisant où devraient aller s'inscrire les données

      Cdlmnt
      0
  8. tuxy88 Messages postés 11 Statut Membre
     
    Bonjour,

    Je n'arrive toujours pas à envoyer les données vers la feuille voulue.

    Voici le lien de mon fichier simpliflé https://www.cjoint.com/?3Kqi1RLbeii
    Il est simplifié mais si j'arrive à faire ce que je veux sur celui-ci, l'adaptation au vrai fichier est assez simple.

    j'ai essayé avec un code diffèrent du votre sur l'userform3 mais il y a également un bug.
    Je pense simplifier les userforms, cela fait un peu "jeu" lol, comme regrouper 1ère utilisation et 2ème utilisation, ce serait un TextBox qui permettrait de savoir.
    Le choix de la préparation pourrait être fait par liste déroulante aussi mais bon il faudrait un code pour envoyer sur la feuille correspondante, et là je galère déjà suffisamment pour des codes simples :/

    De plus, je pars un peu plus loin mais je souhaite par la suite (quand j'aurai l'esprit vba xD) de protéger le fichier par mot de passe, l'utilisateur serait reconnu automatiquement et son nom serait inscrit ainsi dans l'userform sans possibilité de choix. De plus, l'affichage du userform lors d'exécution serait en plein écran mais l'impression en format prédéfini dans vba... Voilà c'est juste pour aller plus loin...

    Merci pour votre aide
    Cordialement ;)
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Bonsoir

      Je ne peux pas faire fonctionner correctement ton fichier, tu as mis des contrôles pour les date et heure que je n'ai pas et qui me provoque une erreur (je ne vois d'ailleurs pas l'utilité de contrôles particuliers puisqu 'apparemment l'utilisateur n'a justement pas le choixde la date et l'heure)
      D'autre part il y a des commandes qui ne peuvent pas fonctionner comme Numéro.ListIndex qui est pour une zone de liste alors que numéro est une textbox

      Bref à partir de tes bases j'ai refait un nouveau fichier avec un code simplifié (et qui fonctionne)
      J'ai mis la procédure pour des mots de passe et l'inscription automatique de l'utilisateur
      Pour l'impression tu verras j'ai fait le choix d'imprimer plutôt une feuille du classeur dans laquelle sont envoyées les données car sa mise en page et son paramétrage est plus aisé et accessible que de le faire par macro

      https://www.cjoint.com/?0KrbPDhUQEB

      En espérant que cela te sera utile

      Cdlmnt
      0
    2. tux88
       
      A première vue, cela à l'air super!!!

      Je vais regarder de manière plus approfondie ;)

      En fait pour adapter à l'ecran, j'ai mis des boutons +/- pour zoomer! et je fais l'userform directement à la taille de l'impression.

      Je reviens lorsque j'ai avancé sur vos codes mais encore une fois un grand merci :) :) :)

      Bon dimanche à vous
      0