• Initiateur de la discussion Initiateur de la discussion simvc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

simvc

XLDnaute Junior
Re Bonjour,

J'ai ajouté un xls qui comprend 4 feuilles, les 3 premières sont les données, la feuille 4 le résumé à obtenir, en Col A le code récupéré avec la plus petite valeur des feuilles 1 à 3 en col B en col C la feulle d'origine doit être renseignée. En feuil 1 le dernier code n'existant pas en feuil 2 et 3 c'est celui-là qui sera repris sous la feuille Résumé. Merci d'vance pour m'aider à résoudre ce problème.
 

Pièces jointes

Re : Recherche tri 2

hello,

Code:
Sub cartman()
'il faut que la feuille 1 comporte au moins tous les codes
'on compte le nombre de feuille
For Each Feuille In Worksheets
cpt = cpt + 1
Next
'la on utilse pas la derniere feuille
nb_feuille = cpt - 1
Sheets("feuil1").Select
For i = 2 To Range("A65536").End(xlUp).Row
Min = 99999
    'on boucle sur les feuilles
     For z = 1 To cpt - 1
     Sheets("feuil" & z).Select
     If Cells(i, 1) <> 0 And code = 0 Then
        code = Cells(i, 1)
     End If
     If Min > Cells(i, 2) And Cells(i, 2) <> 0 Then
        Min = Cells(i, 2)
        nom_feuille = "feuil" & z
     End If
     Next
Sheets("Résumé").Select
Cells(i, 1) = code
Cells(i, 2) = Min
Cells(i, 3) = nom_feuille
code = 0
Next i
End Sub
 

Pièces jointes

Dernière édition:
Re : Recherche tri 2

hello,

Code:
Sub cartman()
'il faut que la feuille 1 comporte au moins tous les codes
'on compte le nombre de feuille
For Each Feuille In Worksheets
cpt = cpt + 1
Next
'la on utilse pas la derniere feuille
nb_feuille = cpt - 1
Sheets("feuil1").Select
For i = 2 To Range("A65536").End(xlUp).Row
Min = 99999
    'on boucle sur les feuilles
     For z = 1 To cpt - 1
     Sheets("feuil" & z).Select
     If Cells(i, 1) <> 0 And code = 0 Then
        code = Cells(i, 1)
     End If
     If Min > Cells(i, 2) And Cells(i, 2) <> 0 Then
        Min = Cells(i, 2)
        nom_feuille = "feuil" & z
     End If
     Next
Sheets("Résumé").Select
Cells(i, 1) = code
Cells(i, 2) = Min
Cells(i, 3) = nom_feuille
code = 0
Next i
End Sub
Bonjour et merci, cela fonctionne très bien, mais en fait je constate avoir pris mon problème à l’envers suite à votre réflexion, en fait j’ai donc 11 feuilles, chacune comporte une col A de code, une col B une désignation (texte), une col C une valeur, dans le tableau résumé, je dois retrouver en col A l’entièreté des codes de toutes les feuilles (certains sont les mêmes) en col B et C la désignation et la valeur pour la feuille 1, en D et E idem pour la feuille 2 etc.., Si dans la feuille résumé un code de colonne A n’est pas retrouvé dans la feuille X, il faut mettre une case sans valeur elle devra être complétée manuellement après. (ceci peut être aussi automatisé à mon avis mais cela dépend d’autres critères que je peux difficilement expliquer maintenant), Si j’ai déjà résolu ce qui précède ce sera un très grand pas. Merci.
 
Re : Recherche tri 2

j ai pas attendu un fichier j ai fais ca ...

Code:
Sub hankey()

'tableau pour mettre les codes
Dim tab_code(200) As Double

tmp_ligne = 0

For Each Feuille In Worksheets
cpt = cpt + 1
Next
'tab_code contient tous les codes de toutes les feuilles !!!
For z = 1 To cpt - 1
    Sheets("feuil" & z).Select
    For i = 2 To Range("A65536").End(xlUp).Row
        code = Cells(i, 1)
        present = False
        For h = LBound(tab_code) To UBound(tab_code)
            If tab_code(h) = code Then
                present = True
            End If
        Next h
        If present = False Then
            tab_code(tmp_ligne) = code
            tmp_ligne = tmp_ligne + 1
        End If
    Next i
Next z
'dans un premier temps on remplis la colonne A avec tous les codes
j = 2
Sheets("Résumé").Select
For h = LBound(tab_code) To UBound(tab_code)
    If tab_code(h) <> 0 Then
        Cells(j, 1) = tab_code(h)
        j = j + 1
    End If
Next h

'ici on va remplir la feuille résumé avec les autres feuilles
c = 2
For y = 1 To cpt - 1
    Sheets("feuil" & y).Select
    For i = 2 To Range("A65536").End(xlUp).Row
        Sheets("feuil" & y).Select
        code = Cells(i, 1)
        designation = Cells(i, 2)
        montant = Cells(i, 3)
        Sheets("Résumé").Select
        For z = 2 To Range("A65536").End(xlUp).Row
            If code = Cells(z, 1) Then
                Cells(z, c) = designation
                Cells(z, c + 1) = montant
            End If
        Next z
    Next i
    Cells(1, c) = "feuil" & y
    c = c + 2
Next y
End Sub

j espere ca te convient
 

Pièces jointes

Re : Recherche tri 2

En annexe le fichier xls, il n'ya que deux feuilles (il y en a 11 au total), la feuille résumé doit contenir tous les codes en col A et le récapitulatif par feuille à partir de la colonne B. Quand le code en Col A n'est pas repris dans le récapitulatif pour une feuille, il ne faut rien afficher.
 

Pièces jointes

Dernière édition:
Re : Recherche tri 2

Je viens de tester c'est impecable, maintenant, comme pour moi VBA c'est presque zéro, je dois insérer cela dans mon fichier de base, il y a parmi les 11 feuilles qui ont presque 20000 lignes!! (cela varie de 6000 à +/- 20000) ce qui va donner dans la feuille Résumé un petit 40000 lignes. Est ce que le VBA est tel que celui-là ou bien faut-il y apporter des modifications? Merci encore, si j'arrive à faire ce que je penses cla va me faire gagner un temps précieux et ce sans risque d'erreurs.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
281
Réponses
5
Affichages
574
  • Question Question
XL 2021 listbox
Réponses
18
Affichages
741
Réponses
3
Affichages
256
Retour