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

[VBA] Formulaire de modification

  • Initiateur de la discussion Initiateur de la discussion Mgn_91
  • 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 !

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,
 

Pièces jointes

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
 
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.
 

Pièces jointes

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.
 

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

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…