[RÉSOLU]: Report de données par nom d'onglet et 2 conditions

Gen Rose

XLDnaute Impliqué
Supporter XLD
Bon vendredi le Forum :eek:

Concernant le problème; je sais qu'il faut probablement un mix en index equiv et decaler mais malgré tous les fils que j'ai trouvé, je ne suis pas arrivé à bidouiller la formule pour ce problème.

Je ne peux pas modifier la construction de ce fichier voilà pourquoi je viens vers le forum pour trouver une formule adaptée.

Plusieurs onglets nommés ainsi: mois annee
Seul un report par onglet sur la feuille "tableau" selon la colonne (toujours la même) et la ligne (variable).

Un fichier-joint est toujours meilleur pour les explications et vous verrez au dernier onglet tableau les cellules B12:B16.
Les conditions sont en A12:A16 pour les onglets et B11 pour les cellules.

Un GROS merci à l'avance.
 

Pièces jointes

  • Report_Onglet_2Cond.xlsx
    24.6 KB · Affichages: 36
Dernière modification par un modérateur:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Report de données par nom d'onglet et 2 conditions

Bonsoir Geneviève, bonsoir le forum,

Par formule je ne sais pas faire... Si une proposition VBA t'intéresse, ton fichier modifié avec le code ci-dessous. Il suffit de double-cliquer dans la cellule B11.
Le code :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans l'onglet
Dim DL As Byte 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (Plage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim O As Object 'déclare la variable O (Onglet)
Dim LT As Integer 'déclare la variabler LT (Ligne du Total)

If Target.Address <> "$B$11" Then Exit Sub 'si le double-clic a lieu ailleurs qu'en B11, sort de la procédure
Cancel = True 'évite le mode [Édition] lié au double-clic
DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A)
Set PL = Range("A12:A" & DL) 'définit la plage PL
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
    On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
    Set O = Sheets(CEL.Value) 'définit l'onglet O (génère une erreur si l'onglet n'existe pas)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'efface l'erreur
        MsgBox "L'onglet [" & CEL.Value & "] n'existe pas ! Veuillez corriger l'édition dans la cellule." 'message
        CEL.Select 'sélectionne la cellule contenant l'erreur
        Exit Sub 'sort de la procédure
    End If 'fin de la condition
    On Error GoTo 0
    LT = O.Columns(1).Find("TOTAL", , xlValues, xlWhole).Row
    CEL.Offset(0, 1).Value = O.Cells(LT, 5).Value 'récupère dans la cellule adjacente le total de l'onglet correspondant
Next CEL 'prochaine cellule de la boucle
End Sub
Le fichier :
 

Pièces jointes

  • Geneviève_v01.xlsm
    37 KB · Affichages: 35

Gen Rose

XLDnaute Impliqué
Supporter XLD
Re : Report de données par nom d'onglet et 2 conditions

Merci beaucoup Robert!

Ça fonctionne parfaitement :)

Je demande une formule car je risque de devoir la reporduire sur d'autres cellules...je serais tellement heureuse si je pouvais éditer ce code!

Je n'ose pas abuser avec une demande plus large.

Un gros merci pour ton aide :eek:
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Report de données par nom d'onglet et 2 conditions

Bonsoir Geneviève, bonsoir le forum,

Allez va, Abuse ! Je suis dans un bon jour... Mais ça restera toujours du VBA...
À moins qu'un(e) de nos balèzes en formules, et il y en a un plein camion ici, ne passe et te donne la formule magique...
 

Efgé

XLDnaute Barbatruc
Re : Report de données par nom d'onglet et 2 conditions

Salut genevieve :) , Bonjour Robert
Si j'ai bien compris et si la colonne est toujours fixe:
A mettre en B12 et a tirer vers le bas
=DECALER(INDIRECT("'"&A12 & "'!$A$1";2);EQUIV("Total";INDIRECT("'"&A12 & "'!$A:$A"))-1;4)

Cordialement
 

Gen Rose

XLDnaute Impliqué
Supporter XLD
Re : Report de données par nom d'onglet et 2 conditions

@ Efgé :D Whoa! Et ça fonctionne super en plus :eek:
Si tu savais le nombre de formule décaler que...arrgh!

@ Robert: Je n'aurais pas à ambitionner sur toi! Mais tu peux toujours jeter un coup d'oeil au fichier-joint que j'étais en train de préparer!

Efgé: Je crois bien que je vais avoir besoin d'un peu plus...vois-tu, je me préparais à donner un autre fichier, plus complet suite à l'échange avec Robert...crois-tu que tu aurais la fougue de jeter un coup d'oeil aux cellules CDE12?:rolleyes:

Merci tout plein :eek:

*Edit: Diantre! Je viens de réaliser que je n'ai qu'à jouer avec les 2 chiffres à la fin de la formule pour le choix de colonne et de ligne :) Il ne manque que les calculs.
 

Pièces jointes

  • V2_Report_Onglet_2Cond.xlsx
    25.3 KB · Affichages: 37
Dernière modification par un modérateur:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Report de données par nom d'onglet et 2 conditions

Bonsoir Genviève, Efgé, bonsoir le forum,

Ha ces canadiennes qui ambitionnent sur le gens ! Expression charmante que je ne connaissais pas...

Mais comme Efgé est un fougueux (malgré son avatar) j'attends un peu pour voir si il te dépatouille car une solution par formules est idéale pour ton cas. Sinon je reste attentif à ce fil...
 

Gen Rose

XLDnaute Impliqué
Supporter XLD
Re : Report de données par nom d'onglet et 2 conditions

Hihihi! J'avoue que nos expressions sont drôlement différentes! Moi, je trouve en général très mignones les expressions françaises et j'en adopte de temps à autre. Vous connaissez l'expression "j'en ai plein le ponpon"? C'est comme en avoir raz le bol...mais pas de vous, de ma journée!

Allez je me tire! Je reviens sur ce fil lundi et bon weekend à tous :eek:
xox
 

Efgé

XLDnaute Barbatruc
Re : Report de données par nom d'onglet et 2 conditions

Re
Fougueux, fougueux.... ...fut un temps, je ne dis pas, mais maintenant....

Bon, avec ce que j'ai compris:
en C12 a tirer vers le bas
=DECALER(INDIRECT("'"&A12 & "'!$A$1";2);EQUIV("Total";INDIRECT("'"&A12 & "'!$A:$A"));4)

En D12 a tirer vers le bas
=DECALER(INDIRECT("'"&A12 & "'!$A$1";2);EQUIV("Total";INDIRECT("'"&A12 & "'!$A:$A"))-1;11)+DECALER(INDIRECT("'"&A12 & "'!$A$1";2);EQUIV("Total";INDIRECT("'"&A12 & "'!$A:$A"))-1;15)

En E12, vous ne le devinerez jamais : a tirer vers le bas:
=DECALER(INDIRECT("'"&A12 & "'!$A$1";2);EQUIV("Total";INDIRECT("'"&A12 & "'!$A:$A"));11)+DECALER(INDIRECT("'"&A12 & "'!$A$1";2);EQUIV("Total";INDIRECT("'"&A12 & "'!$A:$A"));15)

Mais, bon, entre les cellules fusionnées, les colonnes masquées, pas facile de faire plus mieux (enfin pour moi)

P.S l'expression est "Ras le ponpon" :D


cordialement
 

Gen Rose

XLDnaute Impliqué
Supporter XLD
Re : [RÉSOLU]: Report de données par nom d'onglet et 2 conditions

Bon lundi le fil :)
Robert & Efgé,

Super Efgé, ça fonctionne à merveille; ça me donne un sacré coup de main!

Et je crois que la fougue est de tout les âges! Et bon, le vendredi, je m'emporte et je fais des tas de fautes en plus :rolleyes:

Merci à vous 2 et bonne semaine :eek:
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 070
Membres
104 016
dernier inscrit
Mokson