Selection cellule [Résolu]

cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 11:20 - Dernière réponse : cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 12 avril 2007 à 13:56
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 12 avril 2007 à 14:28
3
Merci
Salut,
Remplace TExt par Value alors.

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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 12 avril 2007 à 14:50
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 12 avril 2007 à 15:51
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de jrivet
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 12 avril 2007 à 11:27
0
Merci
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:
Commenter la réponse de drikce06
cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 13:29
0
Merci
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
Commenter la réponse de cs_lauron
cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 14:23
0
Merci
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
Commenter la réponse de cs_lauron
cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 14:46
0
Merci
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
Commenter la réponse de cs_lauron
cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 15:17
0
Merci
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
Commenter la réponse de cs_lauron
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 12 avril 2007 à 15:25
0
Merci
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
Commenter la réponse de jrivet
cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 15:34
0
Merci
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.
Commenter la réponse de cs_lauron
cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 16:09
0
Merci
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 !!!!!!!!!!
Commenter la réponse de cs_lauron
cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 16:32
0
Merci
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
Commenter la réponse de cs_lauron
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 12 avril 2007 à 16:40
0
Merci
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
Commenter la réponse de jrivet
cs_lauron 17 Messages postés jeudi 8 décembre 2005Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 23:21
0
Merci
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
Commenter la réponse de cs_lauron

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.