[VBA] Formulaire de modification

Mgn_91

XLDnaute Nouveau
Bonjour,

J'ai pu trouver sur le site boisgontierjacques.free.fr un formulaire qui permet de faire des modifications dans une base de données à partir de ce formulaire.

Je souhaite reprendre ce formulaire mais lorsque je décale la base de données d'une ligne vers le bas (débuter la base de données en ligne 2 de la feuille est non en ligne 1), le formulaire ne fonctionne plus.


J'imagine que la macro doit être adaptée par rapport à ce décalage de la base de données d'une ligne vers le bas.

Pouvez-vous m'éclairez ?

Merci d'avance pour votre aide,
 

Fichiers joints

pilou76

XLDnaute Occasionnel
Re : [VBA] Formulaire de modification

Bonjour,
Si j'ai bien capté le problème, "a3 au lieu de a2"
a = f.Range("a3:a" & f.[a65000].End(xlUp).Row).Offset(, colCle - 1).Value
 

Mgn_91

XLDnaute Nouveau
Re : [VBA] Formulaire de modification

Merci pour ce retour rapide.

J'ai bien remplacé a = f.Range("a2:a" & f.[a65000].End(xlUp).Row).Offset(, colCle - 1).Value par a = f.Range("a3:a" & f.[a65000].End(xlUp).Row).Offset(, colCle - 1).Value


Mais encore une fois, le formulaire ne s'affiche pas correctement (des textbox n'apparaissent plus) et la ma macro plante. L'erreur semble se situer à ce niveau :

Sub listeExistants()
Me.ListBox1.Clear
i = 0
a = f.Range("a3:a" & f.[a65000].End(xlUp).Row).Resize(, nbCol)
tmp = UCase(Me.ComboBox1)
For k = 1 To UBound(a)
If UCase(a(k, colCle)) = tmp Then n = n + 1
Next k
Dim b(): ReDim b(1 To n, 1 To 4)
For k = 1 To UBound(a)
If UCase(a(k, colCle)) = tmp Then
i = i + 1
b(i, 1) = a(k, 1)
b(i, 2) = a(k, 2)
b(i, 3) = a(k, 3)
b(i, 4) = k + 1
End If
Next k
Me.ListBox1.List = b
End Sub
 

Mgn_91

XLDnaute Nouveau
Re : [VBA] Formulaire de modification

Merci, cela va énormément m'aider dans la construction de mon fichier.

En revanche, je souhaite uniquement garder 13 colonnes dans ma base de données pour pouvoir mettre des formules dans les colonnes suivantes. Pour cela j'ai adapté mon userform avec 13 label et 13 textbox et j'ai également adapté le code comme ceci, mais la macro plante :

Private Sub UserForm_Initialize()
Set f = Sheets("BD")
colCle = 1 ' ADAPTER
nbCol = f.[iv2].End(xlToLeft).Column
For k = 1 To nbCol
Me("label" & k).Caption = f.Cells(2, k)
Next k
For k = nbCol + 1 To 13
Me("label" & k).Visible = False
Me("textbox" & k).Visible = False
Next k
'--
n = f.[a65000].End(xlUp).Row - 1
Set d = CreateObject("scripting.dictionary")
a = f.Range("a3:a" & f.[a65000].End(xlUp).Row).Offset(, colCle - 1).Value
For i = 1 To UBound(a)
If Not d.exists(a(i, 1)) Then d(a(i, 1)) = i + 2
Next i
ReDim tblClé(1 To d.Count, 1 To 2)
i = 0
For Each c In d.keys
i = i + 1: tblClé(i, 1) = c: tblClé(i, 2) = d(c)
Next c
Call Tri2Col(tblClé, LBound(tblClé), UBound(tblClé))
Me.ComboBox1.List = tblClé
Me.ComboBox1.ListIndex = -1
End Sub

Pouvez-vous m'aider sur ce dernier point ?

Merci d'avance pour votre aide.
 

Fichiers joints

Mgn_91

XLDnaute Nouveau
Parfait, merci ça fonctionne parfaitement.

Je souhaite désormais afficher dans la ListBox1, une 4ème colonne. C'est à dire afficher l'adresse en plus du nom, de la société et de la ville.

Une solution ?

Merci par avance
 

Fichiers joints

Mgn_91

XLDnaute Nouveau
Comment afficher dans une listbox une colonne issue de la base de données ?

Dans l'exemple en PJ, je souhaite afficher dans la listbox le nom, la société, la ville et l'adresse (soit 4 colonnes)
Pour l'instant la listbox n'affiche que le nom, la société et la ville (3 colonnes)

Merci pour votre aide.
 

Fichiers joints

Mgn_91

XLDnaute Nouveau
Re : [VBA] Formulaire de modification

nbCol = 13

JB

Parfait, merci ça fonctionne parfaitement.

Je souhaite désormais afficher dans la ListBox1, une 4ème colonne. C'est à dire afficher l'adresse en plus du nom, de la société et de la ville.

Une solution ?

Merci par avance
 

Discussions similaires


Haut Bas