Fonction Recherche V

doudou080 Messages postés 15 Statut Membre -  
 doudou080 -
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. Utilisateur anonyme
     
    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 ?
    0
    1. doudou080 Messages postés 15 Statut Membre
       
      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
      0
    2. Utilisateur anonyme
       
      En une seule cellule ? ou en une autre colonne entière ?
      0
      1. doudou080 Messages postés 15 Statut Membre > Utilisateur anonyme
         
        sur une autre colonne
        0
  2. Utilisateur anonyme
     
    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
    
    0
    1. doudou080 Messages postés 15 Statut Membre
       
      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é
      0
    2. Utilisateur anonyme
       
      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)
      0
    3. Utilisateur anonyme
       
      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
      
      0
  3. doudou080 Messages postés 15 Statut Membre
     
    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
    0
    1. Utilisateur anonyme
       
      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?
      0
    2. Utilisateur anonyme
       
      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
      0
    3. Utilisateur anonyme
       
      Problème résolu ou il manque encore qqchose ?
      0
      1. doudou080 > Utilisateur anonyme
         
        Bonsoir
        Jr ne suis pas chez moi ce soir
        Je regarde demain
        Encore merci pour ton aide
        Bonne soirée
        0
      2. doudou080 > doudou080
         
        bonjour Kartzull

        elle est impeccable ta macro

        encore merci pour ton aide
        0