excel VBA Userform de recherche et modification
Eric
Anonyme
Anonyme
Envoyé le 22/12/2009 à 01:25
Bonjour,
j\'ai fait un userform pour entrer des données sur une feuille excel mais je cherche le code VBA pour faire l\'inverse, recherche à partir du nom ou N°de dossier (2 combobox) et que les données de ma feuille(nom, prénom adresse etc...) s\'affichent dans le Userform pour modifications éventuelles et bien sur enregistrement des nouvelles données.
D\'avance un grand merci a celui qui me donnera le coup de pouce
j\'ai fait un userform pour entrer des données sur une feuille excel mais je cherche le code VBA pour faire l\'inverse, recherche à partir du nom ou N°de dossier (2 combobox) et que les données de ma feuille(nom, prénom adresse etc...) s\'affichent dans le Userform pour modifications éventuelles et bien sur enregistrement des nouvelles données.
D\'avance un grand merci a celui qui me donnera le coup de pouce
Bonjour,
Par contre pour la suite il faut que tu écrives une macro qui va analyser chaque ligne de ton fichier excel et qui va copier le contenu de chaque colonne dans le UserForm
Voici un extrait d\'une macro de ce type que j\'ai écrit pour un fichier de Finance d\'une assos
Ce que j\'ai fait :
Dans une feuille \"Tampon\" cachée je mémorise un certain nombre de variables telles que
MTxtFacture >> N° de la Facture
MTxtNom >> Nom du benéficiaire
...
Ensuite je renvoie ces variables dans le UserForm
Dans mon cas c\'est \"Saisie\" qui le lance et l\'ouvre
Donc dans Saisie on trouve le \"remplissage\" des champs du UserForm FrmSaisie
Voilà ces codes ne sont là que pour te donner une idée.
L\'intérêt d\'utiliser une feuille tampon c\'est la mise au point, cela permet de vérifier chaque étape :
1- Récupération des données de la feuille Excel
2- Vérification du bon transfert dans le UserForm
Bon courage
Je ne comprends pas bien ta question, je suppose que tu parle là de rechercher un fichier ou un dossier ?faire l\'inverse, recherche à partir du nom ou N°de dossier
Par contre pour la suite il faut que tu écrives une macro qui va analyser chaque ligne de ton fichier excel et qui va copier le contenu de chaque colonne dans le UserForm
Voici un extrait d\'une macro de ce type que j\'ai écrit pour un fichier de Finance d\'une assos
Sub Correction()
...
Ici se trouve des commandes générales et des contrôles de validité
...
With FrmSaisie
Range(\"MTxtFacture\") = Cells(Lg, 4)
Range(\"MTxtDate\") = Format(Cells(Lg, 5), \"mm/dd/yy\")
Range(\"MTxtNom\") = Cells(Lg, 6)
Range(\"MTxtPrenom\") = Cells(Lg, 7)
Range(\"MTxtDesignation\") = Cells(Lg, 8)
Range(\"MTxtCat\") = Cells(Lg, 9)
Range(\"MTxtSousCat\") = Cells(Lg, 10)
Range(\"MTxtRem\") = Cells(Lg, 14)
Range(\"MTxtMontant\") = Cells(Lg, 16) + Cells(Lg,
...
...
Unload UserModifierGrille
Saisie
End Sub
...
Ici se trouve des commandes générales et des contrôles de validité
...
With FrmSaisie
Range(\"MTxtFacture\") = Cells(Lg, 4)
Range(\"MTxtDate\") = Format(Cells(Lg, 5), \"mm/dd/yy\")
Range(\"MTxtNom\") = Cells(Lg, 6)
Range(\"MTxtPrenom\") = Cells(Lg, 7)
Range(\"MTxtDesignation\") = Cells(Lg, 8)
Range(\"MTxtCat\") = Cells(Lg, 9)
Range(\"MTxtSousCat\") = Cells(Lg, 10)
Range(\"MTxtRem\") = Cells(Lg, 14)
Range(\"MTxtMontant\") = Cells(Lg, 16) + Cells(Lg,
...
...
Unload UserModifierGrille
Saisie
End Sub
Ce que j\'ai fait :
Dans une feuille \"Tampon\" cachée je mémorise un certain nombre de variables telles que
MTxtFacture >> N° de la Facture
MTxtNom >> Nom du benéficiaire
...
Ensuite je renvoie ces variables dans le UserForm
Dans mon cas c\'est \"Saisie\" qui le lance et l\'ouvre
Donc dans Saisie on trouve le \"remplissage\" des champs du UserForm FrmSaisie
Sub Saisie()
...
Ici se trouve des commandes générales et des contrôles de validité
...
\'Récupération des Saisies
With FrmSaisie
.TxtFacture = Range(\"MTxtFacture\")
.TxtDate = Range(\"MTxtDate\")
.TxtNom = Range(\"MTxtNom\")
.TxtPrenom = Range(\"MTxtPrenom\")
.TxtDesignation = Range(\"MTxtDesignation\")
.TxtCat = Range(\"MTxtCat\")
.TxtSousCat = Range(\"MTxtSousCat\")
.TxtRem = Range(\"MTxtRem\")
.TxtMontant = Range(\"MTxtMontant\")
...
...
End Sub
...
Ici se trouve des commandes générales et des contrôles de validité
...
\'Récupération des Saisies
With FrmSaisie
.TxtFacture = Range(\"MTxtFacture\")
.TxtDate = Range(\"MTxtDate\")
.TxtNom = Range(\"MTxtNom\")
.TxtPrenom = Range(\"MTxtPrenom\")
.TxtDesignation = Range(\"MTxtDesignation\")
.TxtCat = Range(\"MTxtCat\")
.TxtSousCat = Range(\"MTxtSousCat\")
.TxtRem = Range(\"MTxtRem\")
.TxtMontant = Range(\"MTxtMontant\")
...
...
End Sub
Voilà ces codes ne sont là que pour te donner une idée.
L\'intérêt d\'utiliser une feuille tampon c\'est la mise au point, cela permet de vérifier chaque étape :
1- Récupération des données de la feuille Excel
2- Vérification du bon transfert dans le UserForm
Bon courage
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
Eric
Anonyme
Anonyme
Envoyé le 23/12/2009 à 11:44
merci, depuis hier soir j\'ai réussit à \"rappatrier\" les données de la feuille dans le userform grace a un combobox qui recherche par \"NOM\" .Maintenant là où je sèche c\'est comment enregistrer les modifications éventuellement apportées aux données qui sont dans les TextBox et Combobox du Userform
eric
Anonyme
Anonyme
Envoyé le 23/12/2009 à 11:44
Ca y\'est merci j\'arrive maintenant à faire le \"rappel\" d\'une fiche dans le userform (Nom, prénom adresse etc...
Maintenant ce qui me manque c\'est une fois que par exemple je change l\'adresse de Mr DUPONT, c\'est de pouvoir enregistrer cette modification. En clair il me faut le code du bouton \"enregistrer les modifications\"
Maintenant ce qui me manque c\'est une fois que par exemple je change l\'adresse de Mr DUPONT, c\'est de pouvoir enregistrer cette modification. En clair il me faut le code du bouton \"enregistrer les modifications\"
Bonsoir,
C\'est la fonction inverse.
J\'ai la même fonction dans mon fichier Finance
Voilà en gros ce que je fais :
Je sélectionne une cellule de la ligne à modifier
Je lance la macro \"Modifier\"
Une des 1er fonctions de cette macro est de mémoriser la cellule sélectionnée
Si tu en as besoin de la même manière tu peux mémoriser le nom de la feuille
Ensuite tu transfères les champs de ton UserForm vers les cellules de ta feuilles
Quelque chose comme cela
Pour écrire dans les cellules j\'utilise
la fonction Cells(x,y) avec x > n° de ligne Y > n° de colonne
Plutot que
la fonction Range(\"LettreNombre\") où Lettre désigne la colonne et Nombre la colonne.
C\'est plus facile à gérer et surtout on peut ainsi utiliser x et y comme des variables dans des boucles
Exemple
Pour faciliter la mise au point je te conseille d\'utiliser le repérage des cellules par numéro de Ligne et numéro de Colonne >> Dans la feuille Excel Option/Onglet Général tu coches Style de référence L1C1
Voilà bon courage et si tu as encore besoin n\'hésite pas
Bonne fête
En clair il me faut le code du bouton \"enregistrer les modifications\"
C\'est la fonction inverse.
J\'ai la même fonction dans mon fichier Finance
Voilà en gros ce que je fais :
Je sélectionne une cellule de la ligne à modifier
Je lance la macro \"Modifier\"
Une des 1er fonctions de cette macro est de mémoriser la cellule sélectionnée
Lg = ActiveCell.Row \'N° de ligne
Cl = ActiveCell.Column \'N° de colonne
Cl = ActiveCell.Column \'N° de colonne
Si tu en as besoin de la même manière tu peux mémoriser le nom de la feuille
F = ActiveSheet.Name
Ensuite tu transfères les champs de ton UserForm vers les cellules de ta feuilles
Quelque chose comme cela
With FrmSaisie
Cells(2,1) = .TxtNom \'Copie le champ Nom dans la cellule Ligne 2 Colonne 1
Cells(2,2) = .TxtPrenom \'Copie le champ Prénom dans la cellule Ligne 2 Colonne 2
Cells(2,3) = .TxtAdresse \'Copie le champ Adresse dans la cellule Ligne 2 Colonne 3
...
...
End Sub
Cells(2,1) = .TxtNom \'Copie le champ Nom dans la cellule Ligne 2 Colonne 1
Cells(2,2) = .TxtPrenom \'Copie le champ Prénom dans la cellule Ligne 2 Colonne 2
Cells(2,3) = .TxtAdresse \'Copie le champ Adresse dans la cellule Ligne 2 Colonne 3
...
...
End Sub
Pour écrire dans les cellules j\'utilise
la fonction Cells(x,y) avec x > n° de ligne Y > n° de colonne
Plutot que
la fonction Range(\"LettreNombre\") où Lettre désigne la colonne et Nombre la colonne.
C\'est plus facile à gérer et surtout on peut ainsi utiliser x et y comme des variables dans des boucles
Exemple
For X = 1 to 10
For y = 1 to 5
Cells(x,y)=\"*\"
Next y
Next x
Va mettre une * dans toutes les cellules de A1 à E10For y = 1 to 5
Cells(x,y)=\"*\"
Next y
Next x
Pour faciliter la mise au point je te conseille d\'utiliser le repérage des cellules par numéro de Ligne et numéro de Colonne >> Dans la feuille Excel Option/Onglet Général tu coches Style de référence L1C1
Voilà bon courage et si tu as encore besoin n\'hésite pas
Bonne fête
Moi, le jour où j'aurai vraiment mon âge, je mourrai (Léo Ferré).
Eric
Anonyme
Anonyme
Envoyé le 24/12/2009 à 00:29
Merci pour ton aide. En fait il faudrait que je puisse mettre en ligne ou t\'envoyer mon fichier cela serait + clair.
voici comment est mon usrform:
des combobox pour civilité, ville (et d\'autres choses) et textbox pour nom, prénom; adresse CP, ville etc..
j\'ai :
1er bouton: creer une nouvelle fiche, cela fonctionne
2eme bouton enregistrer fiche (sur feuille excel du classeur, cela fonctionne
3eme bouton \"imprimer idem
j\'ai un autre combobox qui me propose par une liste, les noms de mes différentes fiches déja enregistrées. Je peux donc choisir par exemple MR DUPONT et l\'ensemble des données de Mr Dupont reviennent dans le usf.N°dossier, adresse etc...
Je peux donc par exemple modifier le N° de tel de Mr DUPONT;cependant il me faut ensuite cliquer sur mon dernier bouton \"enregistrer les modifs\" et c\'est là que je sèche ....Quel code pour ce bouton afin qu\'il enregistre les données modifiées? (sans créer un doublon de Mr Dupont
Je te donne mon adresse afin que je puisse si tu veux bien t\'envoyer mon fichier qui sera + parlant que ces quelques lignes.
tintinetmilouAcegetel.net (A pour @ afin d\'éviter les robots)
A+ j\'espère....car j\'en bave sur ce fichier !!!!
voici comment est mon usrform:
des combobox pour civilité, ville (et d\'autres choses) et textbox pour nom, prénom; adresse CP, ville etc..
j\'ai :
1er bouton: creer une nouvelle fiche, cela fonctionne
2eme bouton enregistrer fiche (sur feuille excel du classeur, cela fonctionne
3eme bouton \"imprimer idem
j\'ai un autre combobox qui me propose par une liste, les noms de mes différentes fiches déja enregistrées. Je peux donc choisir par exemple MR DUPONT et l\'ensemble des données de Mr Dupont reviennent dans le usf.N°dossier, adresse etc...
Je peux donc par exemple modifier le N° de tel de Mr DUPONT;cependant il me faut ensuite cliquer sur mon dernier bouton \"enregistrer les modifs\" et c\'est là que je sèche ....Quel code pour ce bouton afin qu\'il enregistre les données modifiées? (sans créer un doublon de Mr Dupont
Je te donne mon adresse afin que je puisse si tu veux bien t\'envoyer mon fichier qui sera + parlant que ces quelques lignes.
tintinetmilouAcegetel.net (A pour @ afin d\'éviter les robots)
A+ j\'espère....car j\'en bave sur ce fichier !!!!
Discussion trop ancienne
Cette discussion a été automatiquement fermée car elle n'a plus reçue de nouveau message depuis trop longtemps.
Nous vous suggérons de créer un nouveau message
6 enregistrements - Page 1/1
« Retour sur la liste des messages de ce forum