Modification de cellules à partir d'un userform

  • Initiateur de la discussion Initiateur de la discussion Tomtom75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Tomtom75

Guest
Bonjour à tous,
je suis débutant en VBA et j'aurais besoin de conseils. Voilà, je suis en train de créer un fichier Excel (une petite base de donnée) avec 3 formulaires: 1 pour créer un évenement dans ma base, 1 pour consulter un évenement et 1 pour modifier un évenement. Mon problème vient du dernier formulaire, je ne sais pas comment lui demander de modifier des éléments qui ont déjà été enregistrés. J'ai réussi (notement grace au forum) à lui faire rechercher les éléments et les afficher dans des textbox, pour que mon fichier soit utilisable il faudrait que je soit capable de les modifier mais je ne connais pas les procédures, si quelqu'un pouvait m'aider. Merci.
 

Pièces jointes

Re : Modification de cellules à partir d'un userform

Bonjour Tomtom75 et bienvenue 🙂,
Sort ta variable r en début de projet pour qu'elle reste chargée
Code:
Dim r As Range 'déclare la variable r (Recherche)
Private Sub Bt_Cherche_Click()
 Dim x As Byte 'déclare la variable x (incrément de textbox)
 Set r = Sheets("Liste des incidents").Columns(1).Find(Me.TextBox1.Value, , xlValues, xlWhole) 'définit la recherche r (recherche la valeur de la TextBox1 dans la colonne 2 de l'onglet "Liste des incidents")
...
puis utilise r dans l'autre sens dans le bouton Modifier
Code:
Private Sub Bt_Modifier_Click()
 Dim x As Byte 'déclare la variable x (incrément de textbox)
 If Not r Is Nothing Then 'condition si il existe au moins une occurrence trouvée
     For x = 2 To 8 'boucle sur les 7 textboxes
         r.Offset(0, x - 1).Value = Me.Controls("TextBox" & x).Value 'récupère les informations de la ligne de r
     Next x 'prochaine textbox de la boucle
 End If 'fin de la condition
'fermer le formulaire et enregistrer les modifications
CreateObject("Wscript.shell").Popup "Votre modification a bien été enregistrer.", 2, "Modification sauvegardé", vbInformation
Unload UserForm3
'ActiveWorkbook.Save
End Sub
Bonne suite 😎
 
Re : Modification de cellules à partir d'un userform

Merci de votre aide, ça marche impec.
Par contre est-ce qu'il y a un moyen de déclarer la variable r pour ce qui est des OptionButon ?
j'ai essayé ça mais, évidemment, ça ne fonctionne pas :
Code:
If OptionButton1.Value = True Then
   Insmot = Worksheets("Liste des incidents").Range(r).End(xlUp).Row
   Worksheets("Liste des incidents").Range("H" & Insmot).Value = UserForm3.OptionButton1.Caption
   UserForm3.OptionButton1.Caption = "En cours"
   End If
 
Dernière modification par un modérateur:
Re : Modification de cellules à partir d'un userform

Bonsoir,
à essayer :
Code:
Private Sub Bt_Modifier_Click()
  Dim x As Byte
  If Not r Is Nothing Then   'le r de la procédure précédente ! (voir la remarque ci-dessous)
    For x = 2 To 7
      r.Offset(, x - 1).Value = Me("TextBox" & x)
    Next
    r.Offset(, 7) = IIf(OptionButton1, "En cours", "Cloturé")
    CreateObject("Wscript.shell").Popup "Votre modification a bien été enregistrée.", 2, "Modification sauvegardée", vbInformation
  Else
     Exit Sub 'pas d'occurence trouvée : aucun effet
  End If
  Unload UserForm3
 'ActiveWorkbook.Save
End Sub
mais,attention, la déclaration Dim r As Range doit être faite au début (en première ligne, avant toute procédure) !
 
Re : Modification de cellules à partir d'un userform

Encore merci a ceux qui m'ont répondu, vos connaissances m'ont été précieuses.
J'ai donc mis le code suivant (pour les débutants comme moi qui font des recherches, ça aide) :

Code:
Private Sub Bt_Modifier_Click()
Dim x As Byte 'déclare la variable x (incrément de textbox)
  If Not r Is Nothing Then 'condition si il existe au moins une occurrence trouvée
      For x = 2 To 8 'boucle sur les 7 textboxes
          r.Offset(0, x - 1).Value = Me.Controls("TextBox" & x).Value 'récupère les informations de la ligne de r
      Next x 'prochaine textbox de la boucle
       End If 'fin de la condition
If OptionButton1.Value = True Then
r.Offset(0, 7) = OptionButton1.Caption
OptionButton1.Caption = "En cours"
End If
If OptionButton2.Value = True Then
r.Offset(0, 7) = OptionButton2.Caption
OptionButton2.Caption = "Cloturé"
End If

en faisant bien attention en effet de déclarer en première ligne de code :
Dim r As Range

En PJ, le résultat final pour le bouton "Modification"
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
8
Affichages
315
Retour