Selection cellule

Résolu
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 avril 2007 - 12 avril 2007 à 11:20
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 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

15 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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]

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 avril 2007 à 14:28
Salut,
Remplace TExt par Value alors.

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 avril 2007 à 14:50
Salut,
Peux etre peux tu utiliser la fonction Format, ou bien alors changer le format de ta cellule  

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
12 avril 2007 à 15:51
Re,
Essaie ceci mais sans grande conviction (pas testé)

Private Sub BtSupprimer_Click()
   nomLBindex = SaisieNom.ListIndex + 2
   Call Rows(CStr(nomLBindex) & ":" & CStr(nomLBindex)).Delete(xlUp)
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3

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

Posez votre question
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
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:
0
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 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
0
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 avril 2007
12 avril 2007 à 14:23
salut,
ça provoque un message "Erreur d'éxécution '1004' : Impossible de définir la propriété Text de la classe Range"

Débogage
merci
0
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 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
0
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 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 "".


quand penses-tu ?


et encore merci pour ton aide
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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).

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 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.
0
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 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,


c'est génial !!!!!!!!!!
0
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 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
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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

@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_lauron Messages postés 17 Date d'inscription jeudi 8 décembre 2005 Statut Membre Dernière intervention 12 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
0
Rejoignez-nous