Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Modifier via USF une base de donnée

dgeo27

XLDnaute Junior
Bonjour tout le monde
Sa fait un petit moment que beaucoup d'entre vous m'avait aidé à faire mon programme complet pour mon activité
Seulement, la maintenant je vient de modifier quelques petites choses et je suis bloquer ! :/

J'ai donc un programme complet en UserForm qui enregistre mes devis dans une feuille base de donnée "Devis" et qui enregistre mes Facture dans une feuille base de donnée "Facturier" Jusque la tout fonctionne forcément

Mais j'aimerais un code pour pouvoir MODIFIER un devis existant...
pour le moment, il cherche la 1er ligne vide et enregistre le devis à cette ligne...

Ici je repart avec un nouveau bouton dans l'usf "Modifier devis" donc une fois que je clic, il vérifie si la textbox n° de devis est vide et alors il sort, sinon il continue et par rapport au n° du devis inscrit il recopie donc toutes les TextBox dans la base de donné et forcément à la ligne correspondant au n° du devis =)

Voici ou j'en suis :
Merci à vous

Code :





Private Sub CommandButton25_Click()
If TextBox100 = "" Then
Exit Sub
Else
'Mise en place des valeurs saisies

Dim I As Long, Lig As Long
' Numéro de ligne = Entête tableau 1 + Choix dans la liste + 1 car commence à 0
I = Val(TextBox100)
Lig = 2 + I + 1
' Avec la feuille BD Poste

Select Case UCase(Me.ComboBox13.Value) 'agit en fonction de la valeur de la ComboBox13 (convertie en majuscules)

Dim O As Worksheet
Case "DEVIS" 'cas "DEVIS"
Set O = Worksheets("Devis") 'définit l'onglet O

End Select 'fin de l'action en fonction de la valeur de la Combobox13


For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'userForm
'si la propriété [Tag] du contrôle n'est pas vide, renvoie la valeur du contrôle dans la cellule
'ligne = PLV / colonne = valeur de la propriété [Tag] du contrôle
If CTRL.Tag <> "" Then O.Cells(Lig, CTRL.Tag).Value = CTRL.Value
Next CTRL 'prochaine contrôle de la boucle
End If 'fin de la condition

Worksheets("Facturier").Range("BV:BX").ClearContents 'supprime les données qu'il copie en trop dans Facturier
Worksheets("Devis").Range("BZ:BZ").ClearContents 'supprime les données qu'il copie en trop dans Devis

MsgBox "Les données sont enregistrées"

'Methode simple pour revenir à l'userform "Vide"
Unload Me 'Quitte l'userform
UserForm2.Show 'Revient dans l'userform

End Sub
 

cp4

XLDnaute Barbatruc
Il y a bien un moyen propre au forum, le bouton Téléverser un fichier
en bas à droite
Bonne soirée

edit: j'imagine qu'il s'agit de l'userform2? Désolé mon écran est trop petit pour l'afficher.

Ton select case ne sert à rien, utilise le nom de la feuille plutôt.
 
Dernière édition:

cp4

XLDnaute Barbatruc
Pour le bouton modifier
VB:
Private Sub CommandButton25_Click()
   Dim c As Range
   If Me.TextBox100 = "" Then
      Exit Sub
   Else
      Set c = Sheets("DEVIS").[A:A].Find(Me.TextBox100.Value, LookIn:=xlValues)
      If Not c Is Nothing Then
           With Sheets("DEVIS")
            For Each CTRL In Me.Controls   'boucle sur tous les contrôles de l'userForm
               If CTRL.Tag <> "" Then .Cells(c.Row, CTRL.Tag).Value = CTRL.Value
            Next CTRL   'prochaine contrôle de la boucle

            .Range("BZ:BZ").ClearContents   'supprime les données qu'il copie en trop dans Devis
         End With
      End If
   End If
  
   Worksheets("Facturier").Range("BV:BX").ClearContents   'supprime les données qu'il copie en trop dans Facturier

   MsgBox "Les données sont enregistrées"

   'Methode simple pour revenir à l'userform "Vide"
   Unload Me   'Quitte l'userform
   UserForm2.Show   'Revient dans l'userform
End Sub
Bonne soirée.
 

Discussions similaires

Réponses
4
Affichages
451
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…