Recherche et affectation d'une valeur dans un tableau

Résolu
Barahaoua Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   -  
Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour les amis svp j'ai besoin de votre j'ai besoin d'une macro qui va me permettre de faire ca :

j'ai un tableau ou j'ai des familles A

je vous met svp ci joint une image qui décrit se que je veux faire


merci

3 réponses

  1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    Bonjour,

    Pourquoi une macro?

    Dans la cellule AO6 :

    =SI(AJ6="VRAI";AJ5;SI(AK6="VRAI";AK5;SI(AL6="VRAI";AL5;"")))

    Si besoin d'une macro, je peux la fabriquer mais dans ce cas, il va falloir être plus précis sur l'utilité.

    Cordialement.
    0
    1. Barahaoua Messages postés 89 Date d'inscription   Statut Membre Dernière intervention  
       
      Bpnjour kuartz
      j'ai essayer d'appliquer la formule que tu ma envoyer hier a mon fichier mais malheureusement elle fonctionne pas

      normalement dans la colonne AE je dois coller cette formule et que elle me reccupére les Plat qui correspond a chaque famille dans la colonne X

      c'est pour cela je me demander est ce que il faut pas le faire en macro ?

      =SI(E6:E121="VRAI";E5;SI(F6:F121="VRAI"="VRAI";F5;SI(G6:G121="VRAI"="VRAI";G5;SI(H6:H121="VRAI"="VRAI";H5;SI(I6:I121="VRAI"="VRAI";I5;SI(J6:J121="VRAI"="VRAI";J5;"")))

      je te met le lien stp du fichier merci

      https://www.cjoint.com/c/FGBh2BYd1Qh
      0
  2. barahaoua
     
    merci je vais l'essayer et je vous tiens au courant
    merci beaucoup
    0
  3. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    Bonjour,

    Forcément là, il me manquait quand même pas mal d'infos, notamment le fait que les lignes ne sont pas forcément alignées (les familles je veux dire).

    Je vais faire une macro, ce sera plus simple, je reviens vers toi fin de matinée. Par contre, la colonne CORRESPONDANCE n'existe pas sur le fichier?

    Cordialement.
    0
    1. Barahaoua Messages postés 89 Date d'inscription   Statut Membre Dernière intervention  
       
      la colonne correspondance c'est la colonne AE ( calandre )

      merci beaucoup
      0
      1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65 > Barahaoua Messages postés 89 Date d'inscription   Statut Membre Dernière intervention  
         
        Re,

        Voici le code :

        Option Explicit
        Sub Code()
        
        Dim Trouve As Range, DL As Long, DL2 As Long, Valeur_Cherchee As String, PlageDeRecherche As Range, Ligne As Long, i As Integer, j As Integer
        Dim Produit_1 As String, Produit_2 As String, Produit_3 As String, Produit_4 As String, Produit_5 As String, Produit_6 As String, OCCURENCE As Boolean
        
        DL = Sheets("Qtité Famille").Cells(Application.Rows.Count, 24).End(xlUp).Row
        DL2 = Sheets("Qtité Famille").Cells(Application.Rows.Count, 1).End(xlUp).Row
        
        For i = 6 To DL
        
        For j = 6 To DL2
        
        If Range("X" & i).Value = Range("A" & j).Value Then
        
            OCCURENCE = True
            
            If Str(Sheets("Qtité Famille").Range("E" & j).Value) = "Vrai" Then
                Produit_1 = "plat1 "
            Else
                Produit_1 = ""
            End If
            
            If Str(Sheets("Qtité Famille").Range("F" & j).Value) = "Vrai" Then
                Produit_2 = "plat2 "
            Else
                Produit_2 = ""
            End If
            
            If Str(Sheets("Qtité Famille").Range("G" & j).Value) = "Vrai" Then
                Produit_3 = "plat3 "
            Else
                Produit_3 = ""
            End If
            
            If Str(Sheets("Qtité Famille").Range("H" & j).Value) = "Vrai" Then
                Produit_4 = "plat4 "
            Else
                Produit_4 = ""
            End If
            
            If Str(Sheets("Qtité Famille").Range("I" & j).Value) = "Vrai" Then
                Produit_5 = "plat5 "
            Else
                Produit_5 = ""
            End If
            
            If Str(Sheets("Qtité Famille").Range("J" & j).Value) = "Vrai" Then
                Produit_6 = "plat6 "
            Else
                Produit_6 = ""
            End If
            
            Range("AE" & i) = Produit_1 & Produit_2 & Produit_3 & Produit_4 & Produit_5 & Produit_6
                
        End If
        
        Next j
        
        If OCCURENCE = False Then Range("AE" & i) = "AUCUNE CORRESPONDANCE"
        
        OCCURENCE = False
        
        Next i
            
        
        End Sub


        J'ai géré aussi le fait qu'il n'y ait aucune correspondance.

        Le fichier : https://www.cjoint.com/c/FGBjymMNXwf

        Il suffit de cliquer sur le 2ème bouton :)

        Cordialement.
        0
    2. Barahaoua Messages postés 89 Date d'inscription   Statut Membre Dernière intervention  
       
      merci beaucoup ca fonctionne trés bien
      0
    3. Barahaoua Messages postés 89 Date d'inscription   Statut Membre Dernière intervention  
       
      Rebonjour Kuartz

      est ce que tu peu me voir stp pourquoi j'ai ce beug dans mon fichier

      https://www.cjoint.com/c/FGBn3yn3WUh

      normalement je veux qu'il me remplis les cellules et ensuite me supprime les lignes vides du tableau

      aide moi stp merci
      0
      1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65 > Barahaoua Messages postés 89 Date d'inscription   Statut Membre Dernière intervention  
         
        J'avoue avoir un peu de mal à m'y retrouver, que fait cette partie du code?

        For i = 1 To UBound(tablo, 1)
                If tablo(i, 1) <> "" Then
                    ReDim Preserve tabloR(7, k + 1)
                    tabloR(0, k) = Range("A" & i + 5)
                    For j = 1 To 8
                        tabloR(j, k) = tablo(i, j)
                    Next j
                    k = k + 1
                End If
            Next i
            Range("X6:AD" & derln).ClearContents
            Range("X6").Resize(UBound(tabloR, 2), 7) = Application.Transpose(tabloR)


        Cordialement.
        0