Regroupement des données de diverses feuilles sur une feuille

Bonjour à tous,

Bien qu'à l'aise avec Excel il y a des années de cela, je me retrouve bloqué devant un problème qui me semblait pourtant simple.

J'utilise Excel pour regrouper des prospects, un prospect = une ligne avec diverses informations / colonnes.

Mes prospects sont regroupés par pays. Un pays = une feuille.

Tous les prospects / pays ne sont pas utilisables à l'instant T, j'en ai sélectionné certains et j'ai donc en colonne A, mis l'indication "yes" or "no" comme pour le valider ou pas.

J'aimerai pouvoir regrouper dans une nouvelle feuille, sur le même fichier, tous les prospects validés de tous les diverses feuilles (pays), et pouvoir directement obtenir les mises à jour des informations, sur ma feuille Master afin de pouvoir faire des analyses par la suite.

J'imagine que c'est une question mineure, je n'arrive cependant pas à trouver ma réponse.

En vous remerciant par avance pour votre temps et aide,

Nicolas

Bonjour Karibati

Quelques lignes de code VBA suffisent ... mets nous un extrait anonymisé de ton fichier, ce sera plus facile pour répondre.

Bonjour Steelson,

Merci avant tout pour cette réponse aussi rapide !

Voici ici le fichier sans données.

Tu trouveras un exemple de quelques onglets pays.

Je souhaite que lorsque j'insère un "yes" en début, le prospect puisse se copier directement dans la feuille Master avec la ligne d'informations le concernant.

Tous les onglets ne sont pas identiques au niveau des en-têtes

et la colonne A ne contient pas que Yes/No

donc c'est dommage ! corrige d'abord.

Zut, toutes mes excuses, le voici. Il me semble que tout correspond dès à présent.

Bonsoir Karibati, Steelson,

Un proposition, à tester, avec Power Query.

Il faut mettre les tableaux sous forme de tableaux au sens d'Excel et les nommer en commençant par T_.
Pour actualiser, après l'ajout de nouvelles valeurs, Onglet Données, Requêtes et connexion, Actualiser tout. Il est possible d'automatiser cela par VBA.

Cordialement.

Sub compiler()
Sheets("MASTER").Range("A2").CurrentRegion.Offset(2, 0).ClearContents
For Each f In Worksheets
    If f.Name <> "MASTER" And f.Name <> "Data (HIDE)" And f.Name <> "Collections" Then
        data = f.Cells(Rows.Count, 1).End(xlUp).CurrentRegion
        resultat = filtreArray(data, 1, "Yes")
        Sheets("MASTER").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(UBound(resultat, 1), UBound(resultat, 2)) = resultat
    End If
Next
End Sub

Function filtreArray(Tbl, col, param)
Dim i%, j%, k%, n%
    For i = 1 To UBound(Tbl)
        If Tbl(i, col) = param Then n = n + 1
    Next i
    Dim temp: ReDim temp(1 To n, 1 To UBound(Tbl, 2))

    j = 0
    For i = 1 To UBound(Tbl)
        If Tbl(i, col) = param Then
            j = j + 1
            For k = 1 To UBound(Tbl, 2)
                temp(j, k) = Tbl(i, k)
            Next k
        End If
    Next i
    filtreArray = temp
End Function

edit : bonjour Zebulon ... pour Karibati, il s'agit d'une proposition plus conventionnelle.

Wouah ! Un grand merci Steelson, et bien entendu à toi aussi Zébulon.

Je suis forcément curieux de connaitre la différence entre les deux options que vous m'avez offertes et je ne suis malheureusement pas encore assez calé pour le comprendre de moi même., bien que je puisse voir le côté codage et le côté tableaux.

@steelson, je suis allé fouiner dans la partie VBA et si je comprends bien, je dois run ton code afin de pouvoir obtenir les informations. Que me conseilles tu pour apprendre, mise à part la pratique, pour développer mes compétences en Excel ? Car j'adore cet outil.

@steelson, je suis allé fouiner dans la partie VBA et si je comprends bien, je dois run ton code afin de pouvoir obtenir les informations. Que me conseilles tu pour apprendre, mise à part la pratique, pour développer mes compétences en Excel ? Car j'adore cet outil.

venir sur le forum poser des questions, détailler les réponses données à certains sujets, et petit à petit participer aux réponses

Je vais vérifier les cours à la disposition et tenter de m'améliorer de cette manière.

Steelson: Puis je ajouter des feuilles par la suite avec divers pays supplémentaires ? Sachant qu'à la base, j'en ai 20 :).

Oui, dans la compilation j'exclus les feuilles suivantes : MASTER, Data (HIDE) t Collections

If f.Name <> "MASTER" And f.Name <> "Data (HIDE)" And f.Name <> "Collections" Then

Je viens de rajouter des feuilles, et je reçois un message d'erreur ci dessous.

Je me suis permis de changer dans le code le mot "yes" par "approved".

Cela fonctionne sur les feuilles d'origine que j'ai transmis, pas sur les nouvelles que j'ai ajouté , pourtant, j'ai la même config sur les onglets...

capture d ecran 2021 02 16 a 11 59 33

Tu n'as pas fait d'erreur, cela se produit quand il n'y a pas de données à récupérer dans un onglet

Sub compiler()
Sheets("MASTER").Range("A2").CurrentRegion.Offset(2, 0).ClearContents
For Each f In Worksheets
    If f.Name <> "MASTER" And f.Name <> "Data (HIDE)" And f.Name <> "Collections" Then
        data = f.Cells(Rows.Count, 1).End(xlUp).CurrentRegion
        resultat = filtreArray(data, 1, "Approved")
        On Error Resume Next
            Sheets("MASTER").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(UBound(resultat, 1), UBound(resultat, 2)) = resultat
        On Error GoTo 0
    End If
Next
End Sub

Function filtreArray(Tbl, col, param)
Dim i%, j%, k%, n%, temp
    For i = 1 To UBound(Tbl)
        If Tbl(i, col) = param Then n = n + 1
    Next i
    If n = 0 Then
        temp = Array("null")
        filtreArray = temp
        Exit Function
    End If
    ReDim temp(1 To n, 1 To UBound(Tbl, 2))

    j = 0
    For i = 1 To UBound(Tbl)
        If Tbl(i, col) = param Then
            j = j + 1
            For k = 1 To UBound(Tbl, 2)
                temp(j, k) = Tbl(i, k)
            Next k
        End If
    Next i
    filtreArray = temp
End Function

Je vais comparer les deux codes afin d'essayer de comprendre le fonctionnement.

Cela fonctionne bien, mille mercis pour ton aide ! A bientôt

Rechercher des sujets similaires à "regroupement donnees diverses feuilles feuille"