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

Code VBA modifie base de donnée

ExcelDow

XLDnaute Occasionnel
Bonjour à vous tous,

Dans ce classeur, sur le USF1, il y a un bouton "Modif" pour modifier les cellules dans la feuille.
Hélas, il y a une erreur, mais je ne trouve pas ou.
Y aurai-t-il quelqu'un s'il vous plaît pour m'aider ?
Merci
A++++
 

Pièces jointes

  • CopieUSF_1_à_USF_2_V1.xlsm
    29.6 KB · Affichages: 42
  • CopieUSF_1_à_USF_2_V1.xlsm
    29.6 KB · Affichages: 48

Lone-wolf

XLDnaute Barbatruc
Re : Code VBA modifie base de donnée

Bonjour ExcelDow,

ne voyant pas d'où vien l'erreur, je te propose de regarder ceci et de t'en inspirer.

Code:
Private Sub UserForm_Initialize()
Dim derlig As Integer, x As Integer

With Sheets("Feuil1")
For x = 2 To .Range("a65536").End(xlUp).Row
        ComboBox1 = .Range("a" & x)
        If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("a" & x)
    Next x
    ComboBox1.Text = ""
End With
End Sub

Private Sub UserForm_Activate()
Me.Top = Me.Top + 5
Me.Left = Me.Left + 288

ComboBox1.Text = ""
TextBox2.SetFocus
End Sub

Private Sub TextBox3_Change() ' Affiche Nom et Prénom
If TextBox3.Text <> "" Then _
TextBox1.Text = TextBox2.Text & " " & TextBox3.Text
End Sub

Private Sub TextBox4_Enter()
Dim cel As Range, i As Long

TextBox4.SetFocus
If TextBox4 = "" Then
With Sheets("Feuil1").Range("a2:i65000")
Set cel = .Find(TextBox1, , xlValues, xlWhole)
If Not cel Is Nothing Then
MsgBox "Le fournisseur est déjà dans la liste.", , "Fournisseurs"
For i = 1 To 9
Me.Controls("TextBox" & i).Text = ""
Next
End If
End With
Else
Exit Sub
End If
End Sub

Private Sub CommandButton1_Click() 'Bouton Enregistrements
Dim ctrl As Control
Dim col As Integer
Dim derlig As Integer
Dim cel As Range
Dim i As Long

With Sheets("Feuil1")
derlig = .Range("a65536").End(xlUp).Row + 1

For Each ctrl In Me.Controls
col = Val(ctrl.Tag)
If col > 0 Then
If Not IsNumeric(ctrl) Then
.Cells(derlig, col) = ctrl
Else
.Cells(derlig, col) = CDbl(ctrl)   'format numérique simple ex: 3124
End If
End If
Next ctrl
.Range("G2:H65000").NumberFormat = "000 000 00 00"   'Numéro téléphone et fax
.Range("A:I").Columns.AutoFit
.Range("A2:I65000").Sort [A2], xlAscending
End With

For i = 1 To 9
Me.Controls("TextBox" & i).Text = ""
Next
TextBox2.SetFocus
End Sub

Private Sub CommandButton2_Click() 'Bouton Recherche
Dim cel As Range, i As Long
If ComboBox1 <> "" Then
With Sheets("Feuil1").Range("a2:i65000")
Set cel = .Find(ComboBox1, , xlValues, xlWhole)
If Not cel Is Nothing Then
For i = 1 To 9
Me.Controls("TextBox" & i).Text = cel.Offset(0, i - 1)
Next i
TextBox7 = Format(TextBox7, "000 000 00 00")  
TextBox8 = Format(TextBox8, "000 000 00 00")
Else
MsgBox "Pas de correspondant en cours.", , "Fornisseurs"
ComboBox1 = ""
For i = 1 To 9
Me.Controls("TextBox" & i).Text = ""
Next i
End If
End With
End If
TextBox2.SetFocus
End Sub

Private Sub CommandButton3_Click() 'Bouton Modification
Dim cel As Range, i As Long
If ComboBox1 <> "" Then
With Sheets("Feuil1").Range("a2:i65000")
Set cel = .Find(ComboBox1, , xlValues, xlWhole)
If Not cel Is Nothing Then
For i = 1 To 9
cel.Offset(0, i - 1) = Me.Controls("TextBox" & i).Text
Next i
End If
End With
End If
For i = 1 To 9
Me.Controls("TextBox" & i).Text = ""
Next i
TextBox2.SetFocus
End Sub

Private Sub CommandButton4_Click() 'Bouton Annuler
Dim i As Long
If MsgBox("Voulez-vous vraiment annuler les modifications ?", vbYesNo, "Fournisseur") = vbYes Then
ComboBox1 = ""
For i = 1 To 9
Me.Controls("TextBox" & i).Text = ""
Next
Else
Exit Sub
End If
TextBox2.SetFocus
End Sub

Private Sub CommandButton5_Click() 'Bouton Fermeture Formulaire
Unload Me
End Sub





A+
 

ExcelDow

XLDnaute Occasionnel
Re : Code VBA modifie base de donnée

Bonjour Lone-wolf
C'est cette partie du code qui marche bien,
Un grand merci à toi et bon Week End
A++++

Private Sub UserForm_Initialize()
Dim derlig As Integer, x As Integer

With Sheets("Feuil1")
For x = 2 To .Range("a65536").End(xlUp).Row
ComboBox1 = .Range("a" & x)
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("a" & x)
Next x
ComboBox1.Text = ""
End With
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re : Code VBA modifie base de donnée

Re,

Vu que le 2ème tu l'utilises, insère un 3ème avec combo, puis la macro _initialize(), c'est juste pour que tu fasses un test. Une des macro dans Form1 cause problème.

La macro Initialize c'est celle-ci :

Code:
Private Sub UserForm_Initialize()
Dim derlig As Integer, x As Integer

With Sheets("Feuil1")
For x = 2 To .Range("a65536").End(xlUp).Row
ComboBox1 = .Range("a" & x)
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("a" & x)
Next x
ComboBox1.Text = ""
End With
End Sub

Et je te conseille vivement de mettre 1 seule colonne dans la combo mais, soit Nom soit Prénom. Sinon comme tu fais pour savoir qui sait ?. Personnellement j'ajouterais un colonne, pour concatener Nom &" " & Prénom, et dans la combo tu affiche cette colonne. Et le formulaire 2, j'en vois pas trop l'utilité, puisque tu peux voir les données dans Form1.




A+
 
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Code VBA modifie base de donnée

bonjour ExcelDow , Lone-wolf

perso je partirais avec proprieté .tag vu que les textbox sont renommees

autrement le code serait plus simple...... pas traite transfert dans user2
 

Pièces jointes

  • CopieUSF_1_à_USF_2_V1.xlsm
    28.7 KB · Affichages: 25
  • CopieUSF_1_à_USF_2_V1.xlsm
    28.7 KB · Affichages: 25

ExcelDow

XLDnaute Occasionnel
Re : Code VBA modifie base de donnée

RE,
Voici la copie, mais je suis revenu en arrière, pour ne garder que le N° ID dans le combobox
Ce qui me fait moins de soucis
 

Pièces jointes

  • CopieUSF_1_à_USF_2_V1 - Copie.xlsm
    34 KB · Affichages: 20

Lone-wolf

XLDnaute Barbatruc
Re : Code VBA modifie base de donnée

RE,

mais comment tu fais pour savoir qui c'est le n°2 ou le n°5???? L'ID(numérique) est important c'est vrai. Tout articles(ordi-écran-souirs ect) on un code numérique, mais dans ton cas, pour la recherche, il n'est pas nécessaire, vu que tu peux afficher le nom complet de la personne. Imagine avoir une 100 de clients, comment ferais-tu???




A+
 

ExcelDow

XLDnaute Occasionnel
Re : Code VBA modifie base de donnée

RE, Lone-wolf
Alors voici mon classeur,
Sur le 2ème USF, il y a un combobox qui me permets de trouver les données correspondante
A++++
Merci
 

Pièces jointes

  • CopieUSF_1_à_USF_2_V2.xlsm
    35.7 KB · Affichages: 50

pierrejean

XLDnaute Barbatruc
Re : Code VBA modifie base de donnée

Bonjour a tous (et bises à Laeticia)

Je me suis bien battu avec le fichier d'origine pour enfin trouver l'origine du BUG: Le Combobox1 et la méthode de création de la liste
Un essai avec une méthode différente
Peux-t-on me confirmer qu'il s'agit bien la d'une blague de Bill ?
 

Pièces jointes

  • CopieUSF_1_à_USF_2_V3.xlsm
    27 KB · Affichages: 26

ExcelDow

XLDnaute Occasionnel
Re : Code VBA modifie base de donnée

Salut Pierrejean,

En tous les cas, un grand merci Pierrejean de ton intervention. Ca fonctionne au Top.
He oui, je suis à l'origine de ce cafouillage de code VBA, je suis pas un grand connaisseur, (avouez = a moitié pardonné)
Merci beaucoup Pierrejean et bonne fin de Week End
A+++
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…