Formule adéquate pour regrouper des données

  • Initiateur de la discussion Initiateur de la discussion marine1
  • Date de début Date de début

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 !

M

marine1

Guest
😕Bonjour à tous,

Grand besoin d'aide SVP, je cherche à regrouper des données à partir d'un tableau pour créer un second tableau qui va détailler chaque critère du premier.
Ma question (que j'ai nomée "Requête") est plus claire dans le fichier excel que j'ai mise en pièce jointe.

Je vous remercie d'avance


PS: Si ce n'est pas possible, est ce que ma requête est accessible avec VBA? Connaissez-vous un bon forum pour la VBA?
 

Pièces jointes

Re : Formule adéquate pour regrouper des données

Bonsoir Marine1 le forum
alors déjà pour faire un tableau comme ton exemple en bas à droite, il faudrait peut-être des données dans le tableau du haut
et pour ce que est du vba on est tous des nuls sur xld, la preuve on ne sait même pas faire un tableau de récap avec un tableau vide!!!
C'est bien un signe
a+
Papou😱
 
Re : Formule adéquate pour regrouper des données

Bonsoir marine1, Paritec.


Une réponse partielle car je n'ai pas trouvé de quoi répondre complètement. (Pas trace de Mme Legrand ou de M. Dupont...)

Avec une plage nommée NomA définie par
=Feuil1!$A$4:$A$12;Feuil1!$A$14:$A$20;Feuil1!$A$22:$A$31
VB:
Sub tata()
Dim a&, i&, j&, k&, tmp, v(), plg As Range
  Set plg = Union([NomA], [NomA].Offset(, 3))
  a = plg.Areas.Count / 2
  ReDim v(1, 0)
  For i = 1 To a
    For j = 1 To plg.Areas(i).Rows.Count
      tmp = plg.Areas(i + a).Cells(j).Value
      If Not IsEmpty(tmp) Then
        If IsNumeric(tmp) And tmp > 0 Then
          ReDim Preserve v(1, 1 + UBound(v, 2))
          v(0, UBound(v, 2)) = plg.Areas(i).Cells(j).Value
          v(1, UBound(v, 2)) = tmp
        End If
      End If
    Next
  Next
  k = UBound(v, 2)
  tmp = v
  ReDim v(1 To k, 1)
  For i = 1 To k: For j = 0 To 1: v(i, j) = tmp(j, i): Next j, i
  [B45].Resize(k, 2).Value = v
End Sub
permet de remplir le tableau débutant en B45, et​
VB:
Sub toto()
Dim a&, i&, j&, k&, tmp, v$(), plg As Range
  Set plg = Union([NomA], [NomA].Offset(, 3))
  a = plg.Areas.Count / 2
  ReDim v(0)
  For i = 1 To a
    For j = 1 To plg.Areas(i).Rows.Count
      tmp = plg.Areas(i + a).Cells(j).Value
      If Not IsEmpty(tmp) Then
        If IsNumeric(tmp) And tmp > 0 Then
          With plg.Areas(i).Cells(j)
            For k = 1 To tmp
              ReDim Preserve v(1 + UBound(v))
              v(UBound(v)) = .Value
            Next
          End With
        End If
      End If
    Next
  Next
  k = UBound(v)
  tmp = v
  ReDim v(1 To k, 0)
  For i = 1 To k: v(i, 0) = tmp(i): Next
  [F44].Resize(k).Value = v
End Sub
celui débutant en F44.​


Bonne nuit.


ℝOGER2327
#7487


Mardi 3 Tatane 141 (Sainte Crapule, puriste et Saint Fantomas, archange - fête Suprême Quarte)
28 Messidor An CCXXII, 9,5655h - vesce
2014-W29-3T22:57:26Z
 

Pièces jointes

- 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.

Discussions similaires

Réponses
7
Affichages
467
Réponses
6
Affichages
636
Retour