Fonction Recherche V

bonjour a tous

j'ai besoin d'aide car je suis une quiche

je voudrais faire une recherche sur une feuille excel dans les colonnes de B a K
pour trouver tous les produis qui s'ont a zéro dans la colonne K par rapport a la colonne A

on m'a parlé de la fonction =rechercheV ?

=SI((RECHERCHEV(A:A;B:K;4;VRAI));"";RECHERCHEV(A:A;B:K;4;VRAI))



je ne sais pas si vous allez comprendre mon charabia

au plaisir de vous lire

3 réponses

  1. J'avoue ne pas avoir totalement compris. Tu cherches à avoir une liste de 'codes' pour chaque produits qui est à zéro dans la colonne K? Mais les quels sur cette image sont à zéro dans la colonne K? et à quoi correspondent les codes de la colonne à?

    Edit : Et quel serait le résultat de cette recherche ? de quelle colonne viendraient-ils ?
    1. bonsoir
      tout d’abord merci de prêter attention a mon probleme.

      je veux retrouver dans les colonnes ( B a K ) les memes code que la colonne A
      mais que ceux qui n'on pas de code dedans

      cordialement
    2. En une seule cellule ? ou en une autre colonne entière ?
  2. Si une macro est ok pour toi, en voici une par exemple :

    Sub RechercheProduits()
    
    Dim Column1 As Integer, Column2 As Integer, ColumnResult As Integer, Nbr As Integer
    
    'Colonne A = 1
    Column1 = 1
    'Colonne K = 11
    Column2 = 11
    'Colonne L = 12
    ColumnResult = 12
    'Nombre de lignes
    Nbr = 99
    
    
    ' Efface la colonne resultat
    Columns(ColumnResult).ClearContents
    Dim n1 As Integer, nResult As Integer
    n1 = 1
    nResult = 1
    'Si valeur colonne 1 pas vide
    While IsEmpty(Cells(n1, Column1)) = False
        Dim n2 As Integer
        'Pour lignes de 1 à <Nbr>
        For n2 = 1 To Nbr
            'Si valeur colonne 2 pas vide
            If IsEmpty(Cells(n2, Column2)) = False Then
                'Si valeur colonne 1 = valeur colonne 2
                If Cells(n1, 1).Value = Cells(n2, Column2).Value Then
                    'Copier le contenu de la colonne 2 dans la colonne Resultat
                    
                    'Version à la suite
                    Cells(nResult, ColumnResult).Value = Cells(n2, Column2).Value
                    nResult = nResult + 1
                    
                    'Pour être sur a même ligne que la colonne K, remplacer les 2 lignes du dessus par
                    'Cells(n2, ColumnResult).Value = Cells(n2, Column2).Value
                End If
            End If
        Next
        'Incrémenter le compteur de la colonne 1
        n1 = n1 + 1
    Wend
        
    End Sub
    
    1. une macro pourquoi pas.
      par contre je n'arrive pas a la faire fonctionné
      je fais une insertion module dans visual basic puis copier et coller le code dedans.
      j'ai créer un bouton Control de formulaire mais ca ne fonctionne pas

      desolé
    2. Mais tu es sur d'avoir des codes identiques entre a colonne K et A ? Car sur l'image en tout cas, je n'en vois pas. Et si j'ai bien compris c'est ce que tu recherche, comparer les codes de la colonne K et A.

      Ou en relisant, tu veux peut être plutôt comparer les codes de la colonne A à toutes les autres données de la colonne B à K ? Et les codes identiques ( Par ex. 456 et 34567)
    3. Modif si c'est pour toutes les colonnes (de B à K, modifiable dans le code)

      Sub RechercheProduits()
      
      Dim ColumnDonnee As Byte, ColumnMin As Byte, ColumnMax As Byte, ColumnResult As Byte, NbrMin As Integer, NbrMax As Integer
      
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      '' Important : Mettre les valeurs de la colonne A sans ligne vide.
      ''             Une ligne vide signifie la fin de la liste.
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      
      '''''''' Valeurs modifiables '''''''''''
      
      'Colonne A = 1
      ColumnDonnee = 1
      'Colonne B = 2
      ColumnMin = 2
      'Colonne K = 11
      ColumnMax = 11
      'Colonne L = 12
      ColumnResult = 12
      'Numero de ligne Min (Pour la recherche des données,
      ' des valeurs et l'écriture des résultats)
      NbrMin = 1
      'Numero de ligne Max (Pour la recherche de valeurs)
      NbrMax = 99
      
      ''''''''''''''''''''''''''''''''''''''''
      
      ' Efface la colonne resultat
      Columns(ColumnResult).ClearContents
      ' Numero de ligne
      Dim nDonnee As Integer, nResult As Integer
      nDonnee = NbrMin
      nResult = NbrMin
      'Si valeur colonne donnee pas vide
      While IsEmpty(Cells(nDonnee, ColumnDonnee)) = False
      
          Dim nVal As Integer, Column1 As Integer
          For ColumnVal = ColumnMin To ColumnMax
          
              'Pour lignes de Min à Max
              For nVal = NbrMin To NbrMax
              
                  'Si valeur colonne valeur pas vide
                  If IsEmpty(Cells(nVal, ColumnVal)) = False Then
                  
                      'Si valeur colonne donnee = valeur colonne valeur
                      If Cells(nDonnee, ColumnDonnee).Value = Cells(nVal, ColumnVal).Value Then
                      
                          'Copier le contenu de la colonne valeur dans la colonne Resultat
                          Cells(nResult, ColumnResult).Value = Cells(nVal, ColumnVal).Value
                          nResult = nResult + 1
                      End If
                  End If
              Next
          Next
          'Incrémenter le compteur de la colonne donnee
          nDonnee = nDonnee + 1
      Wend
      
      
      End Sub
      
  3. bonsoir Kartzull

    j'ai simulé sur un fichier les résultats que je souhait voir apparaitre dans la colonne L
    ce sera peut etre plus claire que toutes mes explications a la con lol
    cordialement
    1. Donc mettre dans la colonne L sur la même ligne de la recherche et afficher le résultat uniquement si la valeur dans la colonne K est vide?
    2. Sub RechercheProduits()
      
      Dim ColumnDonnee As Byte, ColumnMin As Byte, ColumnMax As Byte, ColumnResult As Byte, NbrMin As Integer, NbrMax As Integer
      
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      '' Important : Mettre les valeurs de la colonne A sans ligne vide.
      ''             Une ligne vide signifie la fin de la liste.
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
      
      '''''''' Valeurs modifiables '''''''''''
      
      'Colonne A = 1
      '...
      'Colonne L = 12
      
      'Colonne des données à rechercher
      ColumnDonnee = 1
      'Colonne min
      ColumnMin = 2
      'Colonne max
      ColumnMax = 10
      'Colonne où vérifier que la valeur est vide
      ColumnCheck = 11
      'Colonne du resultat
      ColumnResult = 12
      'Numero de ligne Min (Pour la recherche des données,
      ' des valeurs et l'écriture des résultats)
      NbrMin = 1
      'Numero de ligne Max (Pour la recherche de valeurs)
      NbrMax = 99
      
      ''''''''''''''''''''''''''''''''''''''''
      
      ' Efface la colonne resultat
      Columns(ColumnResult).ClearContents
      ' Numero de ligne
      Dim nDonnee As Integer
      nDonnee = NbrMin
      'Si valeur colonne donnee pas vide
      While IsEmpty(Cells(nDonnee, ColumnDonnee)) = False
      
      Dim nVal As Integer, Column1 As Integer
          For ColumnVal = ColumnMin To ColumnMax
      
      'Pour lignes de Min à Max
              For nVal = NbrMin To NbrMax
                  If IsEmpty(Cells(nVal, ColumnCheck)) = True Then
                      'Si valeur colonne valeur pas vide
                      If IsEmpty(Cells(nVal, ColumnVal)) = False Then
      
      'Si valeur colonne donnee = valeur colonne valeur
                          If Cells(nDonnee, ColumnDonnee).Value = Cells(nVal, ColumnVal).Value Then
      
      'Copier le contenu de la colonne valeur dans la colonne Resultat
                              Cells(nVal, ColumnResult).Value = Cells(nVal, ColumnVal).Value
                          End If
                      End If
                  End If
              Next
          Next
          'Incrémenter le compteur de la colonne donnee
          nDonnee = nDonnee + 1
      Wend
      
      
      End Sub
    3. Problème résolu ou il manque encore qqchose ?
    4. @Utilisateur anonymeBonsoir
      Jr ne suis pas chez moi ce soir
      Je regarde demain
      Encore merci pour ton aide
      Bonne soirée
    5. @doudou080bonjour Kartzull

      elle est impeccable ta macro

      encore merci pour ton aide