Extraction de données d'une feuille à une autre

Caninge

XLDnaute Accro
Bonjour à tous,

j'en appelle à vos connaissances pour résoudre mon problème.
J'ai bien essayer avec les fonctions DECALER INDEX EQUIVALENCE mais rien à faire : l'impasse.

dans mon fichier il y a 2 feuilles (base-stats), comment récupérer des données de la feuille "Base" pour les copier dans la feuille "Stats". Sans vouloir en demander de trop, je préférerais sans macro.

J'ai mis 3 exemple. Avec mon fichier joint je pense que vous comprendrez mieux mon affaire.

je vous remercie
 

Pièces jointes

  • Mes dépenses.xlsm
    11.7 KB · Affichages: 42

Caninge

XLDnaute Accro
bonjour,

Pour répondre à Paf j'ai oublier de le noter je ne veux pas de filtre automatique.
Au fait selon ce que j'écris dans les cellules de B3 à F3 , Les lignes correspondantes s'écrivent en dessous comme dans mon deuxième exemple joint.

Merci !
 

Pièces jointes

  • Mes dépenses_V2.xlsx
    11.8 KB · Affichages: 36

vgendron

XLDnaute Barbatruc
Hello
Si je comprend bien, tu souhaites les 3 exemples en 1 seul...

voir pj:
cette solution impose d'avoir les deux formules en G2 etG3...pour éviter de surcharger la formule..
après. je serais prêt à parier qu'il y a plus simple comme formule.. avec du sommeprod...
 

Pièces jointes

  • Mes dépenses (1).xlsm
    13.6 KB · Affichages: 31

job75

XLDnaute Barbatruc
Bonjour Caninge, vgendron, Paf,

Fichier joint avec cette unique formule matricielle en B5 :
Code:
=SIERREUR(INDEX(BaseDate:BaseQte;PETITE.VALEUR(SI(((BaseDate=$B$3)+($B$3=""))*((BaseLettre=$C$3)+($C$3=""))*((BaseProd1=$D$3)+($D$3=""))*((BaseProd2=$E$3)+($E$3=""))*((BaseQte=$F$3)+($F$3=""));LIGNE(BaseDate)-1);LIGNES(B$5:B5));COLONNES($B5:B5));"")
A valider par Ctrl+Maj+Entrée et à tirer à droite et vers le bas.

Quand toutes les cellules en B3:F3 sont vides tout le tableau est restitué.

A+
 

Pièces jointes

  • Mes dépenses_V2(1).xlsx
    21 KB · Affichages: 39

job75

XLDnaute Barbatruc
Re,

La formule précédente recherche la totalité des textes.

Si l'on veut pouvoir faire une recherche partielle :
Code:
=SIERREUR(INDEX(BaseDate:BaseQte;PETITE.VALEUR(SI((ESTNUM(CHERCHE($B$3;BaseDate))+($B$3=""))*(ESTNUM(CHERCHE($C$3;BaseLettre))+($C$3=""))*(ESTNUM(CHERCHE($D$3;BaseProd1))+($D$3=""))*(ESTNUM(CHERCHE($E$3;BaseProd2))+($E$3=""))*(ESTNUM(CHERCHE($F$3;BaseQte))+($F$3=""));LIGNE(BaseDate)-1);LIGNES(B$5:B5));COLONNES($B5:B5));"")
Fichier (2).

A+
 

Pièces jointes

  • Mes dépenses_V2(2).xlsx
    21.1 KB · Affichages: 34

Caninge

XLDnaute Accro
Bonjour job75, Vgendron et Paf

Waouh la formule !!!!!!!

=SIERREUR(INDEX(BaseDate:BaseQte;PETITE.VALEUR(SI((ESTNUM(CHERCHE($B$3;BaseDate))+($B$3=""))*(ESTNUM(CHERCHE($C$3;BaseLettre))+($C$3=""))*(ESTNUM(CHERCHE($D$3;BaseProd1))+($D$3=""))*(ESTNUM(CHERCHE($E$3;BaseProd2))+($E$3=""))*(ESTNUM(CHERCHE($F$3;BaseQte))+($F$3=""));LIGNE(BaseDate)-1);LIGNES(C$5:C5));COLONNES($B5:C5));"")

J'aimerais bien comprendre tout ça (...)
j'ai fais quelques essais et apparemment cela fonctionne parfaitement.

Je vous tiens au courant et encore merci.

Caninge
 

Caninge

XLDnaute Accro
Bonjour,

j'ai pourtant bien copié toutes les formules comme il faut et pourtant les lignes ne sont pas correctes. Je ne comprend pas...
Si tu peux jeter un coup d’œil sur mon fichier réel. Je pense que cela sera plus simple. En te remerciant d'avance.
 

Pièces jointes

  • Dépenses mensuelles.xlsm
    417.7 KB · Affichages: 41
  • Dépenses mensuelles.xlsm
    417.7 KB · Affichages: 29

job75

XLDnaute Barbatruc
Re,

Le tableau source commençant maintenant en ligne 5 il faut remplacer le -1 par -4 :
Code:
=SIERREUR(INDEX(BaseDate:BaseQte;PETITE.VALEUR(SI((ESTNUM(CHERCHE($B$3;BaseDate))+($B$3=""))*(ESTNUM(CHERCHE($C$3;BaseLettre))+($C$3=""))*(ESTNUM(CHERCHE($D$3;BaseProd1))+($D$3=""))*(ESTNUM(CHERCHE($E$3;BaseProd2))+($E$3=""))*(ESTNUM(CHERCHE($F$3;BaseQte))+($F$3=""));LIGNE(BaseDate)-4);LIGNES(B$5:B5));COLONNES($B5:B5));"")
Si l'on veut que la formule fonctionne quelle que soit la position du tableau source il faut remplacer ce nombre par :

-LIGNE(INDEX(BaseDate;1))+1

ce qui donne finalement :
Code:
=SIERREUR(INDEX(BaseDate:BaseQte;PETITE.VALEUR(SI((ESTNUM(CHERCHE($B$3;BaseDate))+($B$3=""))*(ESTNUM(CHERCHE($C$3;BaseLettre))+($C$3=""))*(ESTNUM(CHERCHE($D$3;BaseProd1))+($D$3=""))*(ESTNUM(CHERCHE($E$3;BaseProd2))+($E$3=""))*(ESTNUM(CHERCHE($F$3;BaseQte))+($F$3=""));LIGNE(BaseDate)-LIGNE(INDEX(BaseDate;1))+1);LIGNES(B$5:B5));COLONNES($B5:B5));"")
A+
 

job75

XLDnaute Barbatruc
Bonjour Caninge, le forum,

Le recalcul des formules prend du temps avec la validation matricielle de chaque cellule.

Si l'on valide globalement la plage B5:F500 c'est très rapide.

Du moins quand la plage B3:F3 est renseignée par l'intermédiaire d'un UserForm.

Voyez les fichiers joints, les 2 formules matricielles et le code de l'UserForm :
Code:
Private Sub CommandButton1_Click() 'Valider
Dim t#, dat As Variant
t = Timer
If IsDate(TextBox1) Then dat = CDate(TextBox1) Else dat = TextBox1
[B3:F3] = Array(dat, TextBox2, TextBox3, TextBox4, Replace(Replace(TextBox5, "€", ""), ",", "."))
MsgBox "Durée du calcul " & Format(Timer - t, "0.00 \s") 'juste pour tester
End Sub

Private Sub UserForm_Initialize()
TextBox1 = [B3]: TextBox2 = [C3]: TextBox3 = [D3]: TextBox4 = [E3]: TextBox5 = [F3].Text
End Sub
Edit : pour faire bon poids j'ai ajouté une MFC sur B5:F500.

A+
 

Pièces jointes

  • Dépenses mensuelles validation par cellule(1).xlsm
    434.8 KB · Affichages: 31
  • Dépenses mensuelles validation globale(1).xlsm
    399.9 KB · Affichages: 27
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Ceci est réservé à ceux qui comme moi aiment bien aller au fond des choses.

On aura remarqué que même avec la validation matricielle globale de la plage B5:F500 les calculs prennent du temps quand on modifie la plage B3:F3 manuellement.

La validation globale dans ce cas n'apporte aucun avantage.

On peut y remédier en jonglant par macros avec les modes de calcul Manuel et Automatique.

Voyez ce fichier (2) et les macros dans le code de la feuille et dans ThisWorkbook.

A+
 

Pièces jointes

  • Dépenses mensuelles validation globale(2).xlsm
    398.6 KB · Affichages: 39

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 037
Membres
102 762
dernier inscrit
Ucef