Comment rendre code moins volumineux

Bonjour,

J'ai un problème avec un projet VBA. Ce dernier fonctionnait très bien mais j'ai rajouté des fonctions find et depuis le fichier fonctionne très lentement.

Il s'agit de deux combobox en cascade. La combobox1 permet de chargé l'intitulé de la colonne de la combobox2. Quand on selectionne un titre dans la combobox2. La fonction find va rechercher l'identifiant de la valeur (qui en fait est la première ligne).

Je voulais savoir si il etait possible de simplifier ce code à savoir qu'il y en a trois de ce type dans la même page. Le code fonctionne mais j'ai l'impression qu'il est trop lourd.

Private Sub UserForm_Initialize()

Dim Plage As Range

Dim Tab1() As String

Dim Cell

Dim I

With Sheets("Equipe")

Set Plage = .Range("D56:F56")

End With

ReDim Tab1(1 To Plage.Count)

For Each Cell In Plage

I = I + 1

Tab1(I) = Cell

Next

ComboBox1.List = Tab1

modificationcc.TextBox1.Value = Sheets("Equipe").Range("B18").Value

End Sub

Private Sub CommandButton2_Click()

Dim a

'selection de la valeur dans la page Equipe

'On selectionne l'identifiant

Dim Cel As Range

Set Cel = Sheets("Equipe").Range("D56:F75").Find(What:=Me.ComboBox2, _

LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _

SearchDirection:=xlPrevious, MatchCase:=True, SearchFormat:=False)

'On selectionne l'identifiant

Cel.Select

If Me.ComboBox1.Value = Range("D56") Then

a = ActiveCell.Offset(0, -1).Value

ElseIf Me.ComboBox1.Value = Range("E56") Then

a = ActiveCell.Offset(0, -2).Value

ElseIf Me.ComboBox1.Value = Range("F56") Then

a = ActiveCell.Offset(0, -3).Value

Else

End If

'on va dans la page activité

Sheets("BDD_CCompétence").Select

Dim MA As Range

Set MA = Sheets("BDD_CCompétence").Range("B:E").Find(What:=a, _

LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _

SearchDirection:=xlPrevious, MatchCase:=True, SearchFormat:=False)

Sheets("BDD_CCompétence").Activate

MA.Select

'on selectionne la bonne case

If Me.ComboBox1.Value = Range("D56") Then

ActiveCell.Offset(0, 1).Select

ElseIf Me.ComboBox1.Value = Range("E56") Then

ActiveCell.Offset(0, 2).Select

ElseIf Me.ComboBox1.Value = Range("F56") Then

ActiveCell.Offset(0, 3).Select

Sheets("Equipe").Activate

Else

End If

ActiveCell.Value = TextBox2.Value

Sheets("Equipe").Activate

Unload modificationcc

End Sub

Je vous remercie d'avance,

Damien

Bonsoir

Ton fichier serait plus utile

Voilà, j'ai édité le message et rajouté un morceau du fichier. J'ai éffacé certaines données.

+Seules les boutons aptitudes génèrales et particuliéres sont activés. Ils sont reliés à la base de donnée BDD_comp et BDD_ccompétence.

+Il y a un bouton modification. il y a deux combobox la première charge l'une charge le titre des colonnes catégorie compétence et l'autre en fonction de la compétence choisi selectionne la bonne colonne.

Dans le formulaire, il y a une fonction recherche qui permet de déterminer l'identifiant. Ce qui permet deux choses supprimer la personne ayant cette compétence dans la base de donnée ou de modifier l'intitulé.

En théorie, les codes fonctionnes mais la page rame. Je voulais savoir si il etait possible d'améliorer la rapidité de la chose. Si il existait un code comme ci dessus moins lourd.

Bonsoir à tous,

mertix, il y a un mot de passe à l'ouverture de ton fichier.

Sinon, pour remplir ton combobox, tu peux optimiser ton code comme ceci :

Private Sub UserForm_Initialize()
    Dim Cell As Range
    For Each Cell In Sheets("Equipe").Range("D56:F56")
        ComboBox1.AddItem Cell
    Next
End Sub

Bonjour,

Voilà, j'ai supprimé le mot de passe du fichier.

Je vous remercie pour votre réponse!

Rechercher des sujets similaires à "comment rendre code volumineux"