Macro VBA et formulaire

Fermé
SarahFistol Messages postés 82 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 18 novembre 2022 - Modifié le 26 juil. 2018 à 19:18
SarahFistol Messages postés 82 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 18 novembre 2022 - 26 juil. 2018 à 11:02
Bonjour,

j'ai une macro qui fonctionne mais qui est trop longue à s'exécuter.
Dans un formulaire VBA j'ai un bouton charger le dossier. Pour charger il lui faut presque 5 minutes pour rechercher dans une base de données avec 200 lignes.

Le code utilisé est le suivant :
Private Sub CommandButton5_Click()
Dim I As Long
Sheets("demandes").Activate
I = 5
Do Until Sheets("demandes").Range("A" & I) = ListBox3.Column(0)
Sheets("demandes").Range("B" & I) = ListBox3.Column(1)
Sheets("demandes").Range("C" & I) = ListBox3.Column(2)
I = I + 1
Loop
With Sheets("demandes").Range("A" & I)
Me.TextBox1 = Sheets("demandes").Range("A" & I).Value
Me.TextBox2 = Sheets("demandes").Range("B" & I).Value
Me.TextBox3 = Sheets("demandes").Range("D" & I).Value
Me.TextBox4 = Sheets("demandes").Range("E" & I).Value
Me.TextBox5 = Sheets("demandes").Range("F" & I).Value
Me.TextBox6 = Sheets("demandes").Range("G" & I).Value
Me.ComboBox1 = Sheets("demandes").Range("C" & I).Value
Me.ComboBox2 = Sheets("demandes").Range("H" & I).Value
Me.ComboBox3 = Sheets("demandes").Range("I" & I).Value
Me.TextBox7 = Sheets("demandes").Range("J" & I).Value
Me.TextBox8 = Sheets("demandes").Range("K" & I).Value
Me.ComboBox4 = Sheets("demandes").Range("M" & I).Value
Me.ComboBox5 = Sheets("demandes").Range("N" & I).Value
Me.ComboBox6 = Sheets("demandes").Range("O" & I).Value
Me.ComboBox12 = Sheets("demandes").Range("AE" & I).Value
Me.TextBox16 = Sheets("demandes").Range("P" & I).Value
Me.TextBox17 = Sheets("demandes").Range("Q" & I).Value
Me.TextBox18 = Sheets("demandes").Range("R" & I).Value
Me.TextBox19 = Sheets("demandes").Range("S" & I).Value
Me.TextBox20 = Sheets("demandes").Range("T" & I).Value
Me.TextBox21 = Sheets("demandes").Range("U" & I).Value
Me.TextBox22 = Sheets("demandes").Range("V" & I).Value
Me.TextBox23 = Sheets("demandes").Range("W" & I).Value
Me.TextBox24 = Sheets("demandes").Range("X" & I).Value
Me.TextBox25 = Sheets("demandes").Range("Y" & I).Value
Me.TextBox26 = Sheets("demandes").Range("Z" & I).Value
Me.TextBox27 = Sheets("demandes").Range("AA" & I).Value
Me.TextBox28 = Sheets("demandes").Range("AB" & I).Value
Me.TextBox29 = Sheets("demandes").Range("AC" & I).Value
Me.TextBox15 = Sheets("demandes").Range("AD" & I).Value
Me.ComboBox12 = Sheets("demandes").Range("AE" & I).Value
Me.TextBox30 = Sheets("demandes").Range("L" & I).Value
Me.TextBox31 = Sheets("demandes").Range("AF" & I).Value
Me.MultiPage1.Value = Page3
End With
End Sub

Quelqu'un sait comment la modifier pour aller plus vite à faire ma recherche.

Merci par avance
A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
23 juil. 2018 à 14:32
Bonjour,

Peut-être comme ça :

Option Explicit
Private Sub CommandButton5_Click()
Dim c As Range
  With Sheets("demandes")
    Set c = .UsedRange.Columns(1).Find(ListBox3.Value, , xlValues, xlWhole)
    If Not c Is Nothing Then
      Me.TextBox1.Value = .Range("A" & c.Row).Value
      Me.TextBox2.Value = .Range("B" & c.Row).Value
      Me.ComboBox1.Value = .Range("C" & c.Row).Value
      Me.TextBox3.Value = .Range("D" & c.Row).Value
      Me.TextBox4.Value = .Range("E" & c.Row).Value
      Me.TextBox5.Value = .Range("F" & c.Row).Value
      Me.TextBox6.Value = .Range("G" & c.Row).Value
      Me.ComboBox2.Value = .Range("H" & c.Row).Value
      Me.ComboBox3.Value = .Range("I" & c.Row).Value
      Me.TextBox7.Value = .Range("J" & c.Row).Value
      Me.TextBox8.Value = .Range("K" & c.Row).Value
      Me.TextBox30.Value = .Range("L" & c.Row).Value
      Me.ComboBox4.Value = .Range("M" & c.Row).Value
      Me.ComboBox5.Value = .Range("N" & c.Row).Value
      Me.ComboBox6.Value = .Range("O" & c.Row).Value
      Me.TextBox16.Value = .Range("P" & c.Row).Value
      Me.TextBox17.Value = .Range("Q" & c.Row).Value
      Me.TextBox18.Value = .Range("R" & c.Row).Value
      Me.TextBox19.Value = .Range("S" & c.Row).Value
      Me.TextBox20.Value = .Range("T" & c.Row).Value
      Me.TextBox21.Value = .Range("U" & c.Row).Value
      Me.TextBox22.Value = .Range("V" & c.Row).Value
      Me.TextBox23.Value = .Range("W" & c.Row).Value
      Me.TextBox24.Value = .Range("X" & c.Row).Value
      Me.TextBox25.Value = .Range("Y" & c.Row).Value
      Me.TextBox26.Value = .Range("Z" & c.Row).Value
      Me.TextBox27.Value = .Range("AA" & c.Row).Value
      Me.TextBox28.Value = .Range("AB" & c.Row).Value
      Me.TextBox29.Value = .Range("AC" & c.Row).Value
      Me.TextBox15.Value = .Range("AD" & c.Row).Value
      Me.ComboBox12.Value = .Range("AE" & c.Row).Value
      Me.TextBox31.Value = .Range("AF" & c.Row).Value
      Me.MultiPage1.Value = Me.MultiPage1.Page3.Index
    End If
  End With
End Sub

0
SarahFistol Messages postés 82 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 18 novembre 2022
24 juil. 2018 à 16:31
Merci Patrice pour votre réponse mais ça ne fonctionne pas ...
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié le 24 juil. 2018 à 16:56
Pour plagier une réponse de notre ami vb95 :

Informatiquement ta réponse ne veut rien dire !
Y a-t-il un message d'erreur ?
As-tu essayer en pas à pas ?
Si pas à pas sur quelle ligne est l'erreur et quelle est-elle ?

Nous ne sommes pas devins ni devant ton Pc
0
SarahFistol Messages postés 82 Date d'inscription dimanche 6 janvier 2013 Statut Membre Dernière intervention 18 novembre 2022
26 juil. 2018 à 11:02
Bonjour,

il n'y a pas de message d'erreur et quand j’exécute la macro pas à pas il n'y a pas de point d'arrêt. Comme si la macro fonctionnait mais qu'elle était très longue !
Je peux t'envoyer mon fichier ?
Bonne journée
0