Mettre une valeur dans une cellule en évitant "RECHERCHEV"

Bonjour

Actuellement, j'ai une feuille de calcul dans laquelle la saisie d'un code article en colonne A d'un onglet "Résultat" ramène automatiquement par la fonction RECHERCHEV() en colonne B, C, D ... des données se trouvant dans un onglet 'Table".

Mon problème est que j'ai plusieurs centaines d'article dans ma table et surtout plusieurs milliers de lignes dans l'onglet Résultat.

Toute ces fonctions RECHERCHEV() font que chaque saisie d'un article lance un recalcul de la feuille qui est long.

Je pourrai faire un calcul sur ordre en fin de saisie, mais ne le souhaite pas.

Je pense qu'une solution plus efficace serait une macro qui viendrait remplir les colonnes B, C, D ... (à partir des données de l'onglet "Table") à la saisie du code article en colonne A.

Merci de votre aide

Cdt

Bertrand

26remplissage.zip (5.30 Ko)

Bonjour

A tester :

58remplissage-v01.zip (17.09 Ko)

Amicalement

Nad

Une approche différente :

39remplissage-v1.zip (10.33 Ko)

Salut Nad,

Avec ton fichier, si tu inscris la première référence de la feuille "Table", le format est également copié (ligne vers le haut).

Bonnes salutations.

Bonjour à tous,

Une variante sans boucle

Public Flag As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
'de Claude pour legrandb le 4 mai 2011
If Flag Then Exit Sub
Dim Lg%, x%
    If Not Application.Intersect(Target, Columns("a")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
            Lg = Target.Row
                On Error Resume Next
        With Sheets("Table")
            x = Application.Match(Target, .Columns(1), 0)
                On Error GoTo 0
                If x = 0 Then
                    MsgBox ("N'existe pas !")
                    Flag = True
                        Range(Cells(Lg, "a"), Cells(Lg, "g")).ClearContents
                    Flag = False
                    Exit Sub
                End If
            .Range(.Cells(x, "b"), .Cells(x, "g")).Copy
        End With

            Cells(Lg, "b").PasteSpecial Paste:=xlPasteValues
            Application.CutCopyMode = False
            Target.Activate
    End If
End Sub

Amicalement

Claude

Bonjour

Pas de souci avec Nad et Claude. Ca marche.

Pour Yvouille, j'ai un message d'erreur : "L'indice n'appartient pas à la sélection". J'ai sans doute mal adapté le code à mon fichier réel.

Mais j'ai 2 solutions qui fonctionnent.

Un grand merci à tous les trois pour le temps passé à résoudre mon problème

Cdt

Bertrand

Rechercher des sujets similaires à "mettre valeur evitant recherchev"