cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007
-
12 avril 2007 à 11:20
cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007
-
12 avril 2007 à 23:21
bonjour, je suis débutant et après quelques recherches j'ai réussi à faire un userform pour créer et gérer une base sous excel,
mais voila mon problème,
j'ai une base de données sur feuil1 cellule "ac:ar",
j'ai un combobox qui affiche des noms, prénoms, etc de personnes.
je sélectionne une personne dans la liste, je clique sur un bouiton "afficher", des texbox affichent les infos concernant la personne sélectionnée. jusque la tout va bien. Mais j'ai crée un bouton "modifier" et je voudrais que les infos soient réecrite dans ma base. je n'arrive pas à les inscrire sur la ligne qui correspond au nom afficher mais elles s'inscrivent dans la cellule de droite à la cellule où se trouvait le curseur. il faudrait que j'arrive à activer la cellule qui correspond au nom.
merci pour votre aide
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 12 avril 2007 à 13:56
Salut,
Pourquoi ne pas faire simplement la procédure inverse à afficher?
NOTE: Penses à indiquer les propriétés et non à utiliser les propriétés par défaut.
soit:
Private Sub SaisieNom_Change()
nomLBindex = SaisieNom.ListIndex + 2
End Sub<hr />
'code du bouton "AFFICHER"
Private Sub BtAfficher_Click()
nomLBindex = SaisieNom.ListIndex + 2
SaisieGenre.Text = Sheets("vacataires").Range("AE" & nomLBindex).Text
SaisiePrenom.Text = Sheets("vacataires").Range("AD" & nomLBindex).Text
SaisieAdresse1.Text = Sheets("vacataires").Range("AF" & nomLBindex).Text
'etc....pour les autres textbox
End Sub<hr />
'code du bouton "MODIFIER"
Private Sub BtModifier_Click()
nomLBindex = SaisieNom.ListIndex + 2
Sheets("vacataires").Range("AE" & nomLBindex).Text = SaisieGenre.Text
Sheets("vacataires").Range("AD" & nomLBindex).Text = SaisiePrenom.Text
Sheets("vacataires").Range("AF" & nomLBindex).Text = SaisieAdresse1.Text
'etc... pour les autres texbox
End Sub , ----
[code.aspx?ID=41455 By Renfield]
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 12 avril 2007 à 11:27
Salut, Pas besoin d'activer une cellule pour écrire dedans un simple range("A1").value = "toto" suffit!
Mets nous ton code pour qu'on puisse voir ce qui cloche!
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007 12 avril 2007 à 13:29
bonjour,
voici une partie du code
code du combobox
Private Sub SaisieNom_Change()
nomLBindex = SaisieNom.ListIndex + 2
End Sub
code du bouton "AFFICHER"
Private Sub BtAfficher_Click()
nomLBindex = SaisieNom.ListIndex + 2
SaisieGenre = Sheets("vacataires").Range("AE" & nomLBindex)
SaisiePrenom = Sheets("vacataires").Range("AD" & nomLBindex)
SaisieAdresse1 = Sheets("vacataires").Range("AF" & nomLBindex)
'etc....pour les autres textbox
End Sub
code du bouton "MODIFIER"
Private Sub BtModifier_Click()
ActiveCell.Offset(0, 1).Value = Application.Proper(SaisieNom)
ActiveCell.Offset(0, 2).Value = Application.Proper(SaisiePrenom)
ActiveCell.Offset(0, 3).Value = Application.Proper(SaisieGenre)
ActiveCell.Offset(0, 4).Value = Application.Proper(SaisieAdresse1)
'etc... pour les autres texbox
End Sub
voila et merci
cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007 12 avril 2007 à 14:46
salut,
cela fonctionne en mettant .Value ou en ne mettant rien à la place de .Text
merci
par contre j'ai des cellules de ma base qui ont un formatage personnalisé (exemple n° de téléphone ## ## ## ## ##) il ne prends pas le formatage et affiche ces cellule au format "standard".
as-tu une idée ?
merci pour ta réponse
cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007 12 avril 2007 à 15:17
salut,
j'ai recherché dans l'aide visual d'excel la fonction format, tu as raison cela fonctionne très bien exemple pour information à d'autres qui seraient intéressés :
Sheets("vacataires").Range("AJ" & nomLBindex).Value = Format(SaisieNumSS, "# ## ## ## ### ### - ##")
je vais peut-être changer mon code du bouton "VALIDER" en ce sens car c'est plus pratique et peut-être plus rigoureux.
Maintenant, je m'attaquer au bouton "SUPPRIMER" qui me permettra de supprimer une personne de la liste, il suffit peut-être de remplacer les valeurs par "".
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 12 avril 2007 à 15:25
Salut,
Tout dépend ce que tu veux faire.
Si tu veux que lorsque tu supprime une ligne du fichier Excel , toutes celle qui pourraient se trouver en dessou remonte (pour eviter d'avoir des lignes vides) et bien ce sera un peu plus difficile que de mettre des "".
Mais encore tout dépend de ce que tu souhaites faire.
Le mieux est encore d'essayer.
NOTE: Tu peux essayer l'enregistreur de macro (outil très utile disponible avec Excel).
cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007 12 avril 2007 à 15:34
salut,
en effet, j'ai essayé les "", cela fonctionne mais la ligne reste vide, j'ai lancé une fonction pour trié en espérant que la ligne blanche se retrouve à la fin, mais ça ne marche pas
Private Sub tri()
Sheets("vacataires").Activate 'tri de la base des intervenants
i = Range("AC2").End(xlDown).Row
Range("AC2:AR" & i).Select
Selection.Sort Range("AC2"), xlAscending
raz 'vide les textbox du userform
End Sub
il me semble que dans mes recherches passée, je suis tombé sur un code qui supprimait la ligne de la base. il faudrait que je le retrouve !
je ne vois pas comment faire avec l'enregistreur de macro.
cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007 12 avril 2007 à 16:09
salut,
je te remercie pour toutes ces informations, je garde tout ceci précieusement.
je vais essayer de décortiquer ton dernier code afin d'en apprendre un peut plus,
cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007 12 avril 2007 à 16:32
Re,
sans vouloir abuser, j'ai mon combobox qui affiche plein de lignes vide à la fin de ma liste, comment faire pour ne pas les avoir ?
code du combobax :
Private Sub SaisieNom_Change()
nomLBindex = SaisieNom.ListIndex + 2
End Sub
code du userform :
Private Sub UserForm1_initialize()
SaisieNom.RowSource = ("vacataires!intervenants")
SaisieNom.ListIndex = -1
SaisieGenre.RowSource = ("vacataires!genre") 'je ne me souviens plus pourquoi, je crois que c'est en trop
SaisieTypeSalarie.RowSource = ("vacataires!type_salarie") 'ça aussi
End Sub
merci
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 12 avril 2007 à 16:40
Re,
Je n'ai pas l'habitude d'utiliser les .RowSource
Que représente "vacataires!intervenants" je suppose que c'est un plage de données de ta feuille vacataires nommées intervenants (sans grande conviction!!!)
Peu etre simplement que ta plage est trop grande à un moment et qu'elle se retrouve avec des valeurs vides (je pense notamment à après une suppression)
Peu être devrait redéfinir ta plage après chaque suppression.
Mais là encore ce n'est qu'une supposition car je n'ai pas le classeur sous les yeux
cs_lauron
Messages postés17Date d'inscriptionjeudi 8 décembre 2005StatutMembreDernière intervention12 avril 2007 12 avril 2007 à 23:21
salut,
en fait, il s'agissait de RowSource que j'avais crées au début et que j'ai changés par la suite pour créer une plage de cellule modifiable insérer/nom/définir/nom "type_salarie" =DECALER(vacataires!$BQ$2;;;NBVAL(vacataires!$BQ:$BQ);-1)
insérer/nom/définir/nom "intervenants" =DECALER(vacataires!$AC$2;;;NBVAL(vacataires!$AC:$AR);-1)
j'ai supprimé les rowsource sans problème, il ne servaient pas
par contre comment limiter l'affichage des blancs à la fin de mon combobox utilisant la plage définie par nom "intervenant"
code du combobox :
Private Sub SaisieNom_Change()
nomLBindex = SaisieNom.ListIndex + 2
End Sub
propriété du combobox RowSource : intervenants : =DECALER(vacataires!$AC$2;;;NBVAL(vacataires!$AC:$AR);-1)
code du userform :
Private Sub UserForm1_initialize()
SaisieNom.RowSource = ("vacataires!intervenants")
SaisieNom.ListIndex = -1
End Sub
peut-être y a t'il quelquechose à changer dans la fontion DECALER()
merci