Modification sur userform [Résolu]

mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 15 déc. 2014 à 16:02 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 24 déc. 2014 à 22:50
Bonjour,
Je suis entain de developper un macro planning et j 'ai créé un userform pour modifier les données.
j'ai fait un test sur mini fichier pour etre sur de mon code

Private Sub enregistre_Click()

Dim Ligne As Long
Dim Cel As Range

Set Cel = Worksheets("feuil1").Columns("A").Find(what:=Me.ComboBox1, LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
If MsgBox("Voulez-vous modifier les informations du n° ID " & Me.ComboBox1 & " ?", _
vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub
End If

Worksheets("feuil1").Range("B" & Ligne) = TextBox1
Worksheets("feuil1").Range("C" & Ligne) = TextBox2
Worksheets("feuil1").Range("D" & Ligne) = TextBox3
Worksheets("feuil1").Range("E" & Ligne) = TextBox4
Unload Me
End Sub

Private Sub UserForm_Initialize()
Set f = Sheets("feuil1")
For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row)
Me.ComboBox1.AddItem c
Next c
End Sub

Private Sub ComboBox1_Click()
Set f = Sheets("feuil1")
Ligne = Me.ComboBox1.ListIndex + 2
Me.TextBox1 = f.Cells(Ligne, 2)
Me.TextBox2 = f.Cells(Ligne, 3)
Me.TextBox3 = f.Cells(Ligne, 4)
Me.TextBox4 = f.Cells(Ligne, 5)
End Sub




et ce code fonctionne parfaitement...
lorsque je veux l'applquer a mon macro planning je m arrache les cheveux car il plante mais je ne vois pas ou se trouve mon erreur :(


Private Sub enregistrer2_Click()
Dim ligne As Long
Dim Cel As Range

Set Cel = Worksheets("gestionnaire de taches").Columns("B").Find(what:=Me.ComboBox5, LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
ligne = Cel.Row
If MsgBox("Voulez-vous modifier les informations du n° ID " & Me.ComboBox5 & " ?", _
vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub
End If

Worksheets("gestionnaire de taches").Range("T" & ligne) = TextBox1
Unload Me

End Sub

Private Sub UserForm_Initialize()
Set f = Sheets("gestionnaire de taches")
For Each c In f.Range("b5:b" & f.[B65000].End(xlUp).Row)
Me.ComboBox5.AddItem c
Next c
End Sub

Private Sub ComboBox5_Click()
Set f = Sheets("gestionnaire de taches")
ligne = Me.ComboBox5.ListIndex + 5
Me.ComboBox1 = f.Cells(ligne, 7) 'zone
Me.ComboBox2 = f.Cells(ligne, 8) 'equipement
Me.titre = f.Cells(ligne, 9) 'titre
Me.description = f.Cells(ligne, 10) 'description
Me.ComboBox3 = f.Cells(ligne, 12) 'urgence
Me.impact = f.Cells(ligne, 13) 'impact
Me.besoin = f.Cells(ligne, 14) 'besoin
Me.prerequis = f.Cells(ligne, 15) 'prerequis
Me.postrequis = f.Cells(ligne, 16) 'postrequis
Me.datesou = f.Cells(ligne, 17) 'date souhaité
Me.daterep = f.Cells(ligne, 18) 'delais de reponse
Me.duree = f.Cells(ligne, 19) 'duree
Me.TextBox1 = f.Cells(ligne, 20) 'debut
Me.TextBox2 = f.Cells(ligne, 21) 'fin
Me.responsable = f.Cells(ligne, 24) 'responsable
Me.ressource = f.Cells(ligne, 25) 'ressource
Me.ComboBox4 = f.Cells(ligne, 3) 'statut


End Sub

Private Sub annuler_Click()
planificator.Hide
End Sub

Ca plante sur la partie surlignée....
merci de votre aide
Afficher la suite 

Votre réponse

25 réponses

Meilleure réponse
jordane45 22102 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 17 août 2018 Dernière intervention - 15 déc. 2014 à 16:20
1
Merci
Bonjour,

Lorsque ça plante.. as tu regardé ce que valent tes variables ??
Et aussi .. quel est le message d'erreur ? (ça peut nous aider tu sais...)

A mon avis.. ça vient de ta variable "ligne" ...

    Set Cel = Worksheets("gestionnaire de taches").Columns("B").Find(what:=Me.ComboBox5, LookIn:=xlValues, lookat:=xlWhole)
    If Not Cel Is Nothing Then
      ligne = Cel.Row
      If MsgBox("Voulez-vous modifier les informations du n° ID " & Me.ComboBox5 & " ?", _
                      vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub
End If

Worksheets("gestionnaire de taches").Range("T" & ligne) = TextBox1


Si ton find ne trouve rien.. Ligne ... est VIDE....


    Set Cel = Worksheets("gestionnaire de taches").Columns("B").Find(what:=Me.ComboBox5, LookIn:=xlValues, lookat:=xlWhole)
    If Not Cel Is Nothing Then
      ligne = Cel.Row
      If MsgBox("Voulez-vous modifier les informations du n° ID " & Me.ComboBox5 & " ?", _
                      vbQuestion + vbYesNo, "Modification") <> vbYes Then Exit Sub
      Worksheets("gestionnaire de taches").Range("T" & ligne) = TextBox1
ELSE 
 MsgBox "Aucun résultat !"
End If







Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 22 déc. 2014 à 16:12
En effet c est bien le probleme , mais pourtant mais donnée a retrouver en B6 ca ne peut pas etre vide!!!
Commenter la réponse de jordane45
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 15 déc. 2014 à 17:28
1
Merci
Allez.
Je vais t'aider un peu plus...
Regarde maintenant ce que fait ceci :
Dim f As Worksheet, plage As Range

Private Sub ComboBox5_Click()
MsgBox f.Cells(ComboBox5.ListIndex + plage.Row, 7)
End Sub

Private Sub UserForm_Initialize()
Set f = Worksheets("gestionnaire_de_taches")
lg = f.Range("B" & Rows.Count).End(xlUp).Row
Set plage = f.Range("b5:b" & lg)
ComboBox5.RowSource = f.Name & "!" & plage.Address
End Sub

Tout est maintenant évident (du moins je l'espère pour toi), non ?
Je te laisse maintenant continuer.


Merci ucfoutu 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 24 déc. 2014 à 12:28
De quelles autres textboxes s'agit-il, maintenant ?
Il faut deviner ?
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 24 déc. 2014 à 12:32
bref tu resolu mon probleme c est juste mais je nais je n'ai plus les données pre rempli apres avoir selectionner la combobox5
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 24 déc. 2014 à 12:39
EXCUSE MOI!!!!!!!!! J AI REUSSI A VOIR MON ERREUR!!!!
YOUHOUUUU!
Me.ComboBox1 = f.Cells(ligne, 7) 'zone
Me.ComboBox2 = f.Cells(ligne, 8) 'equipement
Me.titre = f.Cells(ligne, 9) 'titre
Me.description = f.Cells(ligne, 10) 'description
Me.ComboBox3 = f.Cells(ligne, 12) 'urgence
Me.impact = f.Cells(ligne, 13) 'impact
Me.besoin = f.Cells(ligne, 14) 'besoin
Me.prerequis = f.Cells(ligne, 15) 'prerequis
Me.postrequis = f.Cells(ligne, 16) 'postrequis
Me.datesou = f.Cells(ligne, 17) 'date souhaité
Me.daterep = f.Cells(ligne, 18) 'delais de reponse
Me.duree = f.Cells(ligne, 19) 'duree
Me.TextBox1 = f.Cells(ligne, 20) 'debut
Me.TextBox2 = f.Cells(ligne, 21) 'fin
Me.responsable = f.Cells(ligne, 24) 'responsable
Me.ressource = f.Cells(ligne, 25) 'ressource
Me.ComboBox4 = f.Cells(ligne, 3) 'statut
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 24 déc. 2014 à 12:42
merci tu es efficace et pedagogue
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 24 déc. 2014 à 22:50
Je suis heureux que tu aies compris l'essentiel (savoir extraire la moelle).
C'est pour moi un cadeau (de Noël ou autre, peu importe).
Tache de continuer ainsi, sans nécessité de te presser... fais-le très calmement ...garde confiance en toi ...
Bonne chance.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 15 déc. 2014 à 17:14
0
Merci
Bonjour,
Voilà beaucoup d'acrobaties et lenteurs dûes à une mauvaise approche, notamment en ce qui concerne ce maladroit + 5
Je vais te mettre sur la voie, mais tu vas me faire le plaisir de continuer et de ne revenir que si encore en difficulté
1) Dans un cas comme celui-ci l'utilisation de la propriété RowSource est plus que souhaitable
2) évite de nommer (source d'erreurs) une feuille avec des espaces ===>> appelle ta feuille ainsi, plutôt : gestionnaire_de_taches

Premier pas, maintenant :
regarde ce que fait ceci :
Private Sub UserForm_Initialize()
Dim f As Worksheet, plage As Range
Set f = Worksheets("gestionnaire_de_taches")
lg = f.Range("B" & Rows.Count).End(xlUp).Row
Set plage = f.Range("b5:b" & lg)
ComboBox5.RowSource = f.Name & "!" & plage.Address
End Sub

Reviens après ce premier pas
Commenter la réponse de ucfoutu
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 16 déc. 2014 à 07:51
0
Merci
Merci je vais tester
++
Commenter la réponse de mikmak78
mikmak78 59 Messages postés vendredi 5 octobre 2012Date d'inscription 6 mars 2017 Dernière intervention - 22 déc. 2014 à 16:14
0
Merci
Salut All

Je vais recentrer le debat :p
je mets en lien mon fichier

http://cjoint.com/?0LwqvOScrP2

bouton planificator :)
Commenter la réponse de mikmak78
hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 15 déc. 2014 à 20:14
-2
Merci
Bonjour,

Je pense que dans :
Worksheets("gestionnaire de taches").Range("T" & ligne) = TextBox1

ligne étant déclaré comme long :
On devrait avoir :

Worksheets("gestionnaire de taches").Range("T" & str(ligne)) = TextBox1

Bon courage !
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 déc. 2014 à 07:50
Bonjour,
Si tu avais au moins testé ce que tu as écrit, tu ne l'aurais pas écrit !
Fais donc ce petit test :
Dim toto As Long
toto = 123
MsgBox "alors" & toto ' ===>> alors123 (correct)
MsgBox "alors" & Str(toto) ' ===>> alors 123 (incorrect)


Aucune fonction de conversion n'est ici nécessaire. Si tu voulais toutefois absolument en utiliser une, c'est alors Cstr, qui était celle à choisir.
Je vois que tu as "récolté" deux fois un -1. Je crois que cette sanction trouve plus son explication dans le fait que tu es intervenu sans tester que dans celui de ton erreur.
hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 16 déc. 2014 à 15:04
Bonjour et merci pour le commentaire un peu "cassant".
Mais tu as raison, pour que je ne récolte pas un "-1" supplémentaire quoique je m'en tape copieusement, je cesserai dès aujourd'hui toute intervention sur ce site.
Cordialement PROFESSEUR ;)
P.S.: Bien des manières existent pour formuler sans mépris un commentaire.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 16 déc. 2014 à 16:37
Ne confonds pas "mépris" et reproche (c'est un reproche, que je t'ai fait).
Bref ...Faut-il, en plus, te remercier pour ton apport utile (?) à cette discussion ?
Commenter la réponse de hbouia

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.