Optimisation code SelectionChange

Résolu/Fermé
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 8 juil. 2015 à 14:53
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 8 juil. 2015 à 17:33
Bonjour,

Voilà mon code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim i As Long, DL As Long 'RECHERCHEV
         
    DL = Range("B65536").End(xlUp).Row
        
    For i = 13 To DL
        
        If IsError(Application.VLookup(Range("B" & i).Value, Sheets(2).Range("A1:B20000"), 2, 0)) = True Then
        Range("A" & i).Value = ""
        Else: Range("A" & i).Value = Application.VLookup(Range("B" & i).Value, Sheets(2).Range("A1:B20000"), 2, 0)
    End If

Next i


With Shapes("Bouton 5")
    .Height = 60
    .Width = 150
    
End With

With Shapes("Bouton 3")
    .Height = 60
    .Width = 150
    
End With

With Shapes("Bouton 1")
    .Height = 60
    .Width = 150
    
End With


End Sub


Ce code me ralentit pas mal à chaque fois que je sélectionne une cellule sur ma feuille. Cependant, il faut que ces données soient mises à jour en permanence. Avez-vous une idée pour optimiser tout ça?

Merci d'avance.

Cordialement.
A voir également:

2 réponses

Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
8 juil. 2015 à 14:58
J'ai déjà optimisé un peu cette partie :

 If IsError(Application.VLookup(Range("B" & i).Value, Sheets(2).Range("A1:B20000"), 2, 0)) = False Then
       Range("A" & i).Value = Application.VLookup(Range("B" & i).Value, Sheets(2).Range("A1:B20000"), 2, 0)
       Else: Exit For
       End If
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
8 juil. 2015 à 15:46
Bonjour,
il semblerait que ce soit la colonne B qui declanche les recherche:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim i As Long, DL As Long 'RECHERCHEV
    'si pas colonne B sortie
    If Application.Intersect(Target, Range("B:B")) Is Nothing Then Exit Sub
    DL = Range("B65536").End(xlUp).Row
    For i = 13 To DL
        If IsError(Application.VLookup(Range("B" & i).Value, Sheets(2).Range("A1:B20000"), 2, 0)) = True Then
            Range("A" & i).Value = ""
        Else
            Range("A" & i).Value = Application.VLookup(Range("B" & i).Value, Sheets(2).Range("A1:B20000"), 2, 0)
            Exit For
        End If
    Next i

With Shapes("Bouton 5")
    .Height = 60
    .Width = 150
    
End With

With Shapes("Bouton 3")
    .Height = 60
    .Width = 150
    
End With

With Shapes("Bouton 1")
    .Height = 60
    .Width = 150
    
End With


End Sub
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
8 juil. 2015 à 16:01
Bonjour et tout d'abord merci pour l'aide !

Ce code est bien mais il ne fait plus ce que je demande. A savoir que si j'enleve ce qu'il y a en A et que je clique ailleurs, le VlookUp ne s'execute pas. La cellule n'est donc pas remplie.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019
8 juil. 2015 à 16:14
Re

Ben mettez
Range("A:A")
si c'est la colonne A qui doit declancher les recherche
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
8 juil. 2015 à 16:21
Ca ne marche toujours pas. Que voulez-vous dire par déclencher les recherches?

En réalité c'est assez simple, ma recherchev recherche la valeur de la colonne B dans une autre feuille et renvoie une valeur en colonne A. Le but est que le rafraîchissement de cette recherche soit continu.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019
8 juil. 2015 à 16:25
Re,

Que voulez-vous dire par déclencher les recherches? qu'est-ce qui fait que la recherche doit se faire ????
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
8 juil. 2015 à 16:48
La recherche doit se faire si la valeur en B est dans la table matrice de la feuille 2. Mais finalement, peut-être y a-t-il un moyen pour que si la cellule en A est déjà remplie, la recherche ne se fasse pas...
0