Recherche vba

Fermé
tuxy88 Messages postés 11 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 16 novembre 2013 - 11 nov. 2013 à 18:26
 tux88 - 17 nov. 2013 à 09:50
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

via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024 2 703
11 nov. 2013 à 18:57
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
tuxy88 Messages postés 11 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 16 novembre 2013
11 nov. 2013 à 19:52
Merci beaucoup, je vais tester ça tout de suite :)

Bonne soirée ;)
0
tuxy88 Messages postés 11 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 16 novembre 2013
11 nov. 2013 à 20:00
Juste exceptionnelle ta réponse!!!

Très bonne soirée à toi ;)

PS : comment on met en résolu?
0
tuxy88 Messages postés 11 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 16 novembre 2013
11 nov. 2013 à 20:22
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tuxy88 Messages postés 11 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 16 novembre 2013
11 nov. 2013 à 20:32
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
via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024 2 703
11 nov. 2013 à 20:42
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
tuxy88 Messages postés 11 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 16 novembre 2013
12 nov. 2013 à 22:14
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
via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024 2 703
12 nov. 2013 à 22:49
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
tuxy88 Messages postés 11 Date d'inscription dimanche 3 novembre 2013 Statut Membre Dernière intervention 16 novembre 2013
16 nov. 2013 à 09:23
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
via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024 2 703
17 nov. 2013 à 01:41
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
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