Fonction Recherche V

Fermé
doudou080 Messages postés 15 Date d'inscription lundi 6 mars 2017 Statut Membre Dernière intervention 22 octobre 2017 - 6 mars 2017 à 20:36
 doudou080 - 10 mars 2017 à 09:38
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
A voir également:

3 réponses

Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018 138
Modifié par Kartzull le 6/03/2017 à 21:44
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
doudou080 Messages postés 15 Date d'inscription lundi 6 mars 2017 Statut Membre Dernière intervention 22 octobre 2017
Modifié par doudou080 le 6/03/2017 à 21:54
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
Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018 138
Modifié par Kartzull le 6/03/2017 à 21:58
En une seule cellule ? ou en une autre colonne entière ?
0
doudou080 Messages postés 15 Date d'inscription lundi 6 mars 2017 Statut Membre Dernière intervention 22 octobre 2017 > Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018
6 mars 2017 à 22:02
sur une autre colonne
0
Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018 138
6 mars 2017 à 23:20
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
doudou080 Messages postés 15 Date d'inscription lundi 6 mars 2017 Statut Membre Dernière intervention 22 octobre 2017
7 mars 2017 à 00:12
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
Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018 138
7 mars 2017 à 21:36
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
Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018 138
7 mars 2017 à 22:03
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
doudou080 Messages postés 15 Date d'inscription lundi 6 mars 2017 Statut Membre Dernière intervention 22 octobre 2017
8 mars 2017 à 17:38
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
Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018 138
8 mars 2017 à 19:53
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
Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018 138
Modifié par Kartzull le 8/03/2017 à 20:04
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
Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018 138
9 mars 2017 à 18:15
Problème résolu ou il manque encore qqchose ?
0
doudou080 > Kartzull Messages postés 537 Date d'inscription mercredi 31 octobre 2012 Statut Membre Dernière intervention 5 mai 2018
9 mars 2017 à 18:43
Bonsoir
Jr ne suis pas chez moi ce soir
Je regarde demain
Encore merci pour ton aide
Bonne soirée
0
doudou080 > doudou080
10 mars 2017 à 09:38
bonjour Kartzull

elle est impeccable ta macro

encore merci pour ton aide
0