Rassembler sur une feuille données communales venant d'autre feuilles

sposs

XLDnaute Nouveau
Bonjour,

je vous joins un fichier qui résume ma situation.

J'ai un onglet "Synthèse" (vide pour le moment excepté la prévisualisation de ce que je souhaite obtenir) dans lequel je souhaiterais écrire :

- en colonne A : les noms des communes que l'on trouve dans la colonne A1 de chaque feuille
- en colonne B et C : les valeurs trouvées dans chaque feuille correspondante pour les NOM_A et les NOM_B, sachant que dans chaque feuille leur position est variable.

Ca ne doit pas être très compliqué, mais comme c'est super urgent et que je dois trouver ça d'ici ce soir, je poste la question en même temps que je cherche la solution. Si vous êtes plus rapide que moi (et vu mon niveau ça devrait pas être très difficile), je vous en serais très reconnaissant !

A noter que les noms des onglets ne sont pas exploitables pour mes résultats (si quelqu'un avait eu l'idée de passer par là)

Merci de votre aide
Stéphane
 

Pièces jointes

  • Test_Somme_Onglet_Communes.xls
    25.5 KB · Affichages: 81

sposs

XLDnaute Nouveau
Re : Rassembler sur une feuille données communales venant d'autre feuilles

Merci pour la réponse rapide mais ceci dit en fait ça ne résoud pas mon problème.

En fait j'aurais du préciser qu'il peut y avoir de 1 à n onglets "Commune#" et que je n'ai pas connaissance a priori du nom de la commune se trouvant dans la cellule A1. Enfin même parfois NOM_A et/ou NOM_B ne sont pas forcément présents dans les onglets.

C'est pour ça que la fonction Indirect ne peut pas fonctionner a priori tel quelle, mais qu'il faut je pense passer par un système de macro cherchant les valeurs dans toutes les feuilles existantes.

Je suis en train de regarder du côté de cette discussion : https://www.excel-downloads.com/threads/fusion-de-feuilles.82616/

Une idée ?

Merci !
 

CBernardT

XLDnaute Barbatruc
Re : Rassembler sur une feuille données communales venant d'autre feuilles

Bonjour sposs, kjin,

Si j'ai compris ton projet :

Solution par la fonction sommeprod.

Cordialement

Bernard
 

Pièces jointes

  • Test_Somme_Onglet_CommunesV1.xls
    27 KB · Affichages: 73

sposs

XLDnaute Nouveau
Re : Rassembler sur une feuille données communales venant d'autre feuilles

Alors c'est pas trop mal ça même si on automatise pas forcément le process automatiquement en fonction du nombre 1 à n d'onglets. Mais bon un petit copier-coller pourrait aussi bien être efficace.

Par contre mon problème c'est que les onglets n'ont pas forcément des noms prévisibles.
La seule chose c'est qu'il commencent tous pas un chiffre (1, 2, 3,...n) suivi d'un tiret. Après, c'est variable.

Ex: "1-DEPARTEMENT NOM DE COMMUNE..."

Il y a moyen d'utiliser des caractères génériques dans la formuler d'appel d'un nom de feuille ? Par exemple dire :

Code:
=1-*!A1
 

kjin

XLDnaute Barbatruc
Re : Rassembler sur une feuille données communales venant d'autre feuilles

Re,
Par macro
Code:
Sub Conso()
Dim Ws As Worksheet, j As Byte, Derlign As Long, Nom As String
For Each Ws In ActiveWorkbook.Sheets
If Ws.Name <> "SYNTHESE" Then
    With Sheets("SYNTHESE")
        Derlign = .Range("A65000").End(xlUp).Row + 1
        .Range("A" & Derlign) = Ws.Range("A1")
            For j = 2 To .Range("B2").End(xlToRight).Column
            Nom = .Cells(2, j)
            [COLOR="Blue"]x = Application.Index(Ws.Range("E3:E1000"), _[/COLOR]
                          [COLOR="Blue"]Application.Match(Nom, Ws.Range("A3:A1000"), False))[/COLOR]
            [COLOR="Blue"]If Not IsError(x) Then .Cells(Derlign, j) = x[/COLOR]
            Next
    End With
End If
Next
End Sub
A+
kjin
 

Pièces jointes

  • sposs1.zip
    10.1 KB · Affichages: 38
Dernière édition:

sposs

XLDnaute Nouveau
Re : Rassembler sur une feuille données communales venant d'autre feuilles

Salut et merci !

dans le fichier exemple ça marche parfaitement.

Pourrais-tu me détailler l'explication de ces 3 lignes

Code:
For j = 2 To .Range("B2").End(xlToRight).Column
Nom = .Cells(2, j)
x = Application.Index(Ws.Range("E3:E1000"), _
Application.Match(Nom, Ws.Range("A3:A1000"), False))

Il y a quelque chose qui m'échappe dans le matching
 

kjin

XLDnaute Barbatruc
Re : Rassembler sur une feuille données communales venant d'autre feuilles

Re,
commentaires dans le code

Code:
Sub Conso()
Dim Ws As Worksheet, j As Byte, Derlign As Long, Nom As String
'on boucle sur toute les feuilles et avec la 1ere feuille
For Each Ws In ActiveWorkbook.Sheets
'si le nom <> synthèse
If Ws.Name <> "SYNTHESE" Then
    'dans la feuille synthèse
    With Sheets("SYNTHESE")
        'on affecte à derlign le n° de la 1ere cellule vide colonne A
        Derlign = .Range("A65000").End(xlUp).Row + 1
        'et on y inscrit la valeur de A1
        .Range("A" & Derlign) = Ws.Range("A1")
        'on boucle sur toutes les colonnes non vides synthese ligne 2
            For j = 2 To .Range("B2").End(xlToRight).Column
            'on attribut à nom la valeur de la 1ere cellule ligne 2
            Nom = .Cells(2, j)
            'on affecte à x le resultat de la fonction
            'equiv à exemple = INDEX(Commune1!E3:E1000;EQUIV(B2;Commune1!A3:A1000;0))
            x = Application.Index(Ws.Range("E3:E1000"), _
                 Application.Match(Nom, Ws.Range("A3:A1000"), False))
            'si la fonction ne renvoie pas d'erreur on affecte la valeur dans la feuille synthèse
            If Not IsError(x) Then .Cells(Derlign, j) = x
            Next
    End With
End If
Next
End Sub

A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 488
Messages
2 088 861
Membres
103 979
dernier inscrit
imed