Modification de données saisies par textbox ou combobox dans Excel

hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010 - 10 mai 2009 à 13:02
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010 - 10 mai 2009 à 15:51
Bonjour,

En VBA :

J'ai une userform avec des textbox et combobox qui me permettent de basculer dans Excel sur la 1ère ligne libre les données saisies dans mon formulaire.

En choisissant l'option modification des données (via un optionbutton), j'affiche une liste box qui me permet de visualiser mes données qui se trouvent dans Excel. je clique sur une ligne et les donnée s'affichnt aors dans les textbox et combobox qui ont servies précédemment pour la saisie. Cela me permet d corriger une donnée qui ne sera pas correcte.

En cliquant sur un bouton, je peux ainsi modifier la données dans ligne d'Excel. Cela fonctionne pur une modification.

Si je veux modifier plus d'une données (c'est-à-dire à partir 2, 3... textbox ou combobox), le basculement dans excel ne se fait que pour la 1ère ligne de code ex :

Private Sub modif_Click()
Dim NuméroLigne As Integer

'Bouton modification
If OptionButton2 = False Then Exit Sub

NuméroLigne = ListBox1.Value
NuméroLigne = NuméroLigne + 1

If TextBox3.Value <> Cells(NuméroLigne, 1) Then Cells(NuméroLigne, 1) = Me.TextBox3
If TextBox1.Value <> Cells(NuméroLigne, 2) Then Cells(NuméroLigne, 2) = Me.TextBox1
If TextBox2.Value <> Cells(NuméroLigne, 3) Then Cells(NuméroLigne, 3) = Me.TextBox2
If ComboBox1.Value <> Cells(NuméroLigne, 4) Then Cells(NuméroLigne, 4) = Me.ComboBox1

End Sub

Dans cet exemple si je modifie une des textbox ou de la combobx, cela fonctionne, par contre si je veux modifier la textbox 3 et la textbox1 et bien seule la données de la texbox3 sera copier dans Excel.

Est-ce que quelqu'un pourrait m'aider ?

J'ai le fichier complet si nécessaire, mais je ne sais pas comment le joindre à ce poste.

d'avance merci

hidozo

4 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
10 mai 2009 à 13:24
Salut,

Ton code fonctionne chez moi, mais sans le "Me" il n'est pas admis par mon formulaire,
If TextBox3.Value <> Cells(NuméroLigne, 1) Then Cells(NuméroLigne, 1) =  TextBox3

Tu dois bien avoir une erreur quelque part, essaye de mettre des points d'arret sur chaque lignes.

@+ Mayzz
0
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010
10 mai 2009 à 13:42
bonjour,

Je viens d'essayer en enlevant les "Me", mais le basculement des données ne se fait que pour la textbox3 et pas pour les autres quand je fais plusieurs modifications.

Comment mettre des points d'arrêt ?

Cordialement

Hidozo
0
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010
10 mai 2009 à 13:50
re,

j'ai mis les points d'arrêt : la sub passe bien de chaque ligne en chaque ligne : tjrs rien !!

j'ai supprimé les conditions en ne gardant qur :
Cells(NuméroLigne, 1) = TextBox3

Cells(NuméroLigne, 2) = TextBox1

Cells(NuméroLigne, 3) = TextBox2

Cells(NuméroLigne, 4) = ComboBox1

rien, tjrs rien, je ne peux pas changer plus d'une données

rien non plus en rajoutant les "Me""

Décidément, tout cela me dépasse !!! lol

hidozo
0
hidozo Messages postés 56 Date d'inscription samedi 24 mai 2008 Statut Membre Dernière intervention 6 novembre 2010
10 mai 2009 à 15:51
re bonjour,

j'ai essayé la solution suivante, mais le .apply me dit erreur

Private Sub modif_Click()
Dim NuméroLigne As Integer
Dim DerligSaisie As String

'Bouton modification
If OptionButton2 = False Then Exit Sub

NuméroLigne = ListBox1.Value

Worksheets("Feuil1").Select
DerligSaisie = [a65000].End(xlUp).Row + 1

Cells(DerligSaisie, 1) = Me.TextBox3
Cells(DerligSaisie, 2) = Me.TextBox1
Cells(DerligSaisie, 3) = Me.TextBox2
Cells(DerligSaisie, 4) = Me.ComboBox1

Rows(NuméroLigne).Delete

Columns("a:d").Select
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("a:d") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("a:d")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
       
    End With
    ActiveWindow.SmallScroll down:=-1

End Sub
0
Rejoignez-nous