Recherche Valeur dans un autre onglet

Bonjour,

j'ai créé ce code, par contre étant débutant, j'aimerai avoir votre avis sur ce code.

Merci d'avance

Sub Imputation()
'***** Variables *****
    Dim NbLgInventaire, NbLgImputation As Long
    Dim CompteurInventaire, CompteurImputation As Long
    Dim RefInventaire, RefImputation As String
    Dim Imputation As String
    Dim shInventaire, shImputation As Worksheet
    Dim TabloImputation As Variant
    '***** Code *****
    Set shInventaire = Worksheets("Inventaire")
    Set shImputation = Worksheets("Imputations")
    NbLgInventaire = shInventaire.Range("A" & Rows.Count).End(xlUp).Row
    NbLgImputation = shImputation.Range("A" & Rows.Count).End(xlUp).Row
    shInventaire.Range("K2:K" & Rows.Count).ClearContents
    '*****
    ReDim TabloImputation(1 To NbLgInventaire - 1, 1 To 1)
    '*****
    For CompteurInventaire = 2 To NbLgInventaire
        RefInventaire = shInventaire.Range("B" & CompteurInventaire).Value
        For CompteurImputation = 2 To NbLgImputation
            RefImputation = shImputation.Range("A" & CompteurImputation).Value
            Imputation = shImputation.Range("B" & CompteurImputation).Value
            If RefImputation = RefInventaire Then
                TabloImputation(CompteurInventaire - 1, 1) = "Emballages"
                Exit For
            Else
                TabloImputation(CompteurInventaire - 1, 1) = shInventaire.Range("A" & CompteurInventaire).Value
            End If
        Next CompteurImputation
    Next CompteurInventaire
    shInventaire.Range("K2").Resize(NbLgInventaire - 1, 1) = TabloImputation
    shInventaire.Range("A:K").EntireColumn.AutoFit
    Call Calcul_Valeur_Stock
End Sub

Bonjour

Donner un avis sur un code surtout quand on a rien pour tester ce n'est pas évident

Je considère ta demande comme un exercice de style "Cherchez les erreurs" et surtout pas une critique de ton code

Et en plus j'avais du temps

Tes lignes de déclaration des variables:

Exemple celle ci

Dim NbLgInventaire, NbLgImputation As Long

Sera interprétée comme ceci

Dim NbLgInventaire As Variant, NbLgImputation As Long

A quoi sert le fait d'écrire dans ton tableau, toujours au même endroit

Je m'explique

Tu compares une donnée d'une page avec toutes les données d'une autre page, et tant que le test est faux tu écris dans ton tableau, toujours dans le même élément une donnée qui change

 
If RefImputation = RefInventaire Then
  ' Le test est bon tu écris ta valeur et tu quittes
  TabloImputation(CompteurInventaire - 1, 1) = "Emballages"
  Exit For
Else
  ' Le test est faux tu écris une valeur dans ton tableau et tu boucles
  TabloImputation(CompteurInventaire - 1, 1) = shInventaire.Range("A" & CompteurInventaire).Value
End If

A quoi sert la variable Imputation ?

Bonjour,

merci de tes commentaires, il faudrait mettre un "exit for" sur le second test ?

Bonjour

Aucune idée

Je ne sais pas quel résultat tu attends

Le Exit For est en cas une mauvaise solution

Car à la 1ère différence la recherche serait terminée

As tu essayé Find ?

Si tu as beaucoup de données c'est peut être plus rapide

Mais sans fichier je ne peux pas t'aider beaucoup plus

Mon fichier comportant des données professionnelles et confidentielles, je ne peux le transmettre.

Désolé

Bonjour

Pas grave

Je ne suis pas le demandeur

Si tu arrives à t'en sortir c'est très bien

Bonne continuation

Rechercher des sujets similaires à "recherche valeur onglet"