Recherche vba
tuxy88
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
tux88 -
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
Au lieu de activesheets, je mets Worksheets("la feuille que je veux")
et hop c'est parti!!!
Tchou tchou et encore merci
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
++
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
++
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
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
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 ;)
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 ;)
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
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
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
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