VBA afficher et modifier userform

alexleng

XLDnaute Nouveau
Bonjour à tous
Je sais que ce post existe mais je n'ai pas trouvé de reponses à mes questions et surtout des exemples.
Très débutant en VBA je souhaites creer appeler et modifier les données du formulaire
Creation ok
Zero pointé pour appeler et enregistrer les modifs via un combobx1 =num_demande

Puis-je avoir des exemples, aides

merci beaucoup
 

Pièces jointes

  • dep.xls
    112.5 KB · Affichages: 248
  • dep.xls
    112.5 KB · Affichages: 327
  • dep.xls
    112.5 KB · Affichages: 310

imallinman

XLDnaute Nouveau
Re : VBA afficher et modifier userform

Bonjour Papou-net, Bonjour Robert et Forum,

Merci encore.
Ce sera un mélange de nom du contrôle ET son Tag alors ?

La nouvelle boucle de la fonction Btn_OK_Click() semble bien fonctionner. Mais j'ai du mal à vérifier correctement , puisque j'ai l'erreur de la boucle de la fonction ctrl1_Change() qui continue de me poser probleme et que je n'arrive pas à lui faire sauter un control !


Supposons que j'ai 4 Colonnes : A, B, C, D.

J'ai seulement 3 controles dans mon UserForm. Je prends la solution avec les Tags en lettres comme ceci :

ctrl1 avec le Tag A
ctrl2 avec le Tag B
ctrl4 avec le Tag D

Désolé les gars, je me rends compte que je suis carrément débutant !
 

Pièces jointes

  • Sauter_colonne.xls
    53 KB · Affichages: 118

Papou-net

XLDnaute Barbatruc
Re : VBA afficher et modifier userform

RE imallinman,

J'ai omis de te préciser que les boucles que je t'ai proposées s'adressent en fait au module ctrl1_Change.

Pour le module Btn_OK_Click, essaie en remplaçant ta boucle indicée :

Code:
For i = 1 To 4
    Sheets("sheet1").Range(Me.Controls("Ctrl" & i).Tag & li).Value = Me.Controls("Ctrl" & i).Value
Next i
par celle-ci :

Code:
For Each tb In Me.Controls
    If tb.Name Like "ctrl*" Then
        Sheets("sheet1").Range(tb.Tag & li).Value = tb.Value
    End If
Next

Cordialement.

PS : bonjour Fo_rum
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA afficher et modifier userform

Bonjour le fil, bonjour le forum,

En pièce jointe la version 3 avec des contrôles qui se suivent et des colonnes sautées. Le code modifié :

Code:
Private dl As Integer 'déclare la variable dl (Dernière Ligne)
Private pl As Range 'déclare la varaible pl (PLage)

Private Sub UserForm_Initialize()
    With Sheets("Sheet1")
        dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row
        Set pl = .Range("A4:A" & dl)
    End With
    Me.ctrl1.List = pl.Value
End Sub


Private Sub ctrl1_Change()
Dim i As Byte

Lg = ctrl1.ListIndex + 4
For i = 1 To 3
    Me.Controls("ctrl" & i).Value = Sheets("Sheet1").Cells(Lg, Me.Controls("ctrl" & i).Tag)
Next i
End Sub


Private Sub Btn_OK_Click()
Dim r As Range
Dim li As Integer
Dim i As Integer

Set r = pl.Find(ctrl1.Value, , xlValues, xlWhole)
If r Is Nothing Then
  li = dl + 1
Else
    li = r.Row
    If MsgBox(" Vous confirmez la modification ?", vbOKCancel + vbQuestion, "MODIFICATION DEMANDE EXISTANTE") = vbCancel Then Exit Sub
End If
For i = 1 To 3
    Sheets("sheet1").Range(Me.Controls("Ctrl" & i).Tag & li).Value = Me.Controls("Ctrl" & i).Value
Next i
Unload Me
End Sub


Private Sub CommandButton1_Click()
    Unload Me
End Sub
Le fichier :
 

Pièces jointes

  • Imallinman_v03.xls
    46.5 KB · Affichages: 214

imallinman

XLDnaute Nouveau
Re : VBA afficher et modifier userform

Bonjour Forum,

Merci Papou-net, devrais-je faire une autre boucle pour mes futures ComboBox et BoutonsRadio ou j'essaie de les faire entrer dans la même boucle que les TextBox ?

Merci Robert, ça fonctionne très bien.
Seulement, est-ce qu'il y aurait une solution pour garder la possibilité d'ajouter une nouvelle ligne quand la valeur saisie dans notre ComboBox n'existe pas dans la colonne A ? Pour l'instant il n'accepte pas la saisie !

Bonne journée à tous,
 

Papou-net

XLDnaute Barbatruc
Re : VBA afficher et modifier userform

Bonjour, imallinman, Robert, Fo_rum, le Forum,

...devrais-je faire une autre boucle pour mes futures ComboBox et BoutonsRadio ou j'essaie de les faire entrer dans la même boucle que les TextBox ?

La même boucle fera très bien l'affaire, il faudra seulement aiguiller le traitement des données en fonction du type de contrôle traité.

Code:
For Each tb In Me.Controls
    If TypeOf tb Is MsForms.ComboBox Then
        ...
    End If
    If TypeOf tb Is MsForms.TextBox Then
        ...
    End If
    If TypeOf tb Is MsForms.OptionButton Then
        ...
    End If
Next
Espérant avoir répondu.

Cordialement.
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : VBA afficher et modifier userform

Bonjour le fil, bonjour le forum,

En pièce jointe la version 4 avec le code modifié :
Code:
Private Sub ctrl1_Change()
Dim i As Byte
Dim lg As Integer

If Me.ctrl1.ListIndex <> -1 Then
    lg = ctrl1.ListIndex + 4
    For i = 1 To 3
        Me.Controls("ctrl" & i).Value = Sheets("Sheet1").Cells(lg, Me.Controls("ctrl" & i).Tag)
    Next i
End If
End Sub
Le fichier :
 

Pièces jointes

  • Imallinman_v04.xls
    47 KB · Affichages: 123

imallinman

XLDnaute Nouveau
Re : VBA afficher et modifier userform

Bonjour, Papou-net, Robert, Fo_rum, le Forum,

Merci, C'est parfait. exactement ce qu'il me falait. Il ne me reste plus qu'à essayer d'apprendre le fonctionnement !

C'est un super forum ici. Très réactif et vivant ! Je viens de commencer mon projet et viendrai souvent ici pour trouver des solutions !

Bonne fin de semaine à tous
 

Discussions similaires

Statistiques des forums

Discussions
312 359
Messages
2 087 587
Membres
103 602
dernier inscrit
nuky_nuke