Optimisation code SelectionChange

Résolu
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -  
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -
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.

2 réponses

  1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      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
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention  
       
      Re

      Ben mettez
      Range("A:A")
      si c'est la colonne A qui doit declancher les recherche
      0
    3. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      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
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention  
       
      Re,

      Que voulez-vous dire par déclencher les recherches? qu'est-ce qui fait que la recherche doit se faire ????
      0
    5. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
       
      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