Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 !
Bonjour,
J'aimerai savoir comment procéder pour trier une base de données et mettre les résultats dans un tableau automatiquement.
(Voir piece jointe).
Merci de me répondre.
Silene
En D18 et à copier-coller sur tout ton tableau :
=SOMMEPROD(($D$5:$D$12=D$17)*($C$5:$C$12=DECALER($B18;-MOD((LIGNES(D$18😀18)-1);5);0))*(DECALER($D$5:$D$12;0;EQUIV($C18;$E$4:$I$4;0))))
Format de nombre personnalisé (pour que les 0 ne se voient pas) :
[=0]"";0
Je le savais bien que j'étais toujours en rodage !
Alors Monique toujours avec le Turbo ? Pense à allumer tes "codes"
Je n'ai pas tout compris ! Decaler Equiv et -MOD dans la même formule.
Faut le faire exprès !
En passant (lentement) - MOD ? Une petite explication ne serait pas réfusée.
La base est placée dans la première feuille et le tableau dans la seconde.
Il est supposé que la base est extensible vers le bas mais que le Tableau est fixe.
Il est supposé également qu'il peut y avoir plusieurs données à transférer sur une même ligne de la base.
Un bouton commande la macro de transfert depuis la feuille Tableau, également, cette opération s'effectue automatiquement à l'activation de la feuille Tableau.
Suite.
Les plages sont nommées, c'est plus facile à lire :
=SOMMEPROD((Service=D$17)*(Bureau=DECALER($B18;-MOD((LIGNES(D$18😀18)-1);5);0))*(DECALER(Service;0;EQUIV($C18;Motif;0))))
Et puis il y a une 2ème formule, utilisant la fonction Indirect() en ayant donné un nom aux 5 colonnes de motifs
Comme explication, j'ai fait des "formules-phrases"
Bonjour à tous et merci pour vos réponses qui sont d'ailleurs super.
J'ai une petite question pour " CBernardT ".
Comme j'aime bien comprendre ce que je fais j'aimerai avoir une petite explication sur le morceau de code qui suit:
For Each C In Plage
If C <> "" Then
For Each Cbis In Table
If Cbis.EntireRow.Range("C1") = C.EntireColumn.Range("A4") And _
Cbis.EntireColumn.Range("A3") = C.EntireRow.Range("D1") And _
Cbis.EntireRow.Range("B1") = C.EntireRow.Range("C1") Then
Cbis = Cbis + C
End If
Next Cbis
End If
Next C
La puissance des propriétés "EntireRow" et "EntireColumn" ainsi d'ailleurs que la propriété "Offset" est d'offrir des outils souples pour calculer de nouveaux objets Range à partir d'une plage d'origine.
C'est très pratique pour comparer des variables aux étiquettes d'un tableau et inscrire au croisement une valeur. Ton projet en est l'exemple type.
Explications sur la première ligne de code :
Cbis.EntireRow.Range("C1") = C.EntireColumn.Range("A4")
La propriété EntireRow renvoie toute la ligne de la cellule Cbis et .Range("C1") limite le renvoie à la cellule 3 (C troisième lettre) de cette ligne.
La propriété EntireColumn renvoie toute la colonne de la cellule C et .Range("A4") limite le renvoie à la cellule 4 de la colonne.
Explication de la condition If et And :
If Cbis.EntireRow.Range("C1") = C.EntireColumn.Range("A4") And _
Cbis.EntireColumn.Range("A3") = C.EntireRow.Range("D1") And _
Cbis.EntireRow.Range("B1") = C.EntireRow.Range("C1") Then
Cbis = Cbis + C
End If
If (Si) Condition1 And (Et) Condition2 And Condition3 then Action
end if
Si les trois conditions sont réalisées alors Action sinon aller à la fin.
Enfin,
For Each C In Plage
For Each Cbis In Table
If..... Then
Cbis = Cbis + C
End If
Next Cbis
Next C
For Each In Next, est une boucle qui assigne à tour de rôle chaque objet d'une collection. Ici tous les objets C dans la Collection Plage sont comparés à tous les objets Cbis de la collection Table, si les conditions de If sont vrai alors il ajoute la valeur de C à Cbis.
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.