1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2013 Distribution de données basiques

Discussion dans 'Forum Excel' démarrée par Sirounet, 12 Février 2019 à 09:49.

  1. Sirounet

    Sirounet XLDnaute Nouveau

    Inscrit depuis le :
    Mardi
    Messages :
    3
    "J'aime" reçus :
    0
    Bonjour à toutes et tous,

    J'ai besoin de vos lumières et vous remercie d'avance pour l'aide apportée au débutant que je suis. J'ai cherché pour éviter de vous faire perdre du temps inutilement, mais pour des cas un peu similaire les scripts étaient souvent bien trop compliquées et dépassaient ma compréhension malheureusement....

    Mon fichier Excel joint à la discussion est sans doute bien plus parlant que les explications à suivre. Je ne peux que vous encourager à vous y référer

    Postulat de départ :
    3 colonnes (A/B/C) avec 3 types de données différentes sur 3 lignes par exemple

    Mon but :
    Que la colonne A soit "distribuée" (je ne sais pas si c'est vraiment le bon terme) avec les colonnes B et C ce qui donnerai
    A1 /B1/C1
    A1 /B2/C2
    A1/B3/C3
    A2/B1/C1
    A2 /B2/C2
    A2/B3/C3
    A3/B1/C1
    A3 /B2/C2
    A3/B3/C3
    Terminé

    Les colonnes B et C n'ont pas besoin d'être mélangée, c'est vraiment le format ci-dessus que je recherche.

    Si vous auriez une petite minute pour vous pencher sur ce problème qui n'en est sans doute pas un pour vous, cela me serait d'une aide très précieuse.

    Merci d'avance pour avoir prit le temps de lire et de vous pencher sur ma requête.
     

    Pièces jointes:

  2. Chargement...

    Discussions similaires - Distribution données basiques Forum Date
    Modification de la distribution des données dans un tableau Forum Excel 28 Septembre 2015
    Distribution des données intelligente Forum Excel 13 Janvier 2015
    faciliter la distribution des données d'1 classeur dans 124 classeurs Forum Excel 22 Février 2013
    Distribution de données Forum Excel 4 Décembre 2012
    Macro pour automatiser des distributions de données dans un calendrier Forum Excel 4 Mars 2011

  3. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26269
    "J'aime" reçus :
    2301
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour Sirounet, bienvenue sur XLD,

    Voici une solution VBA avec cette macro :
    Code (Text):
    Sub Resultat()
    Dim dest As Range, ncol%, P As Range, tablo, h&, resu(), i&, n&, j&, k%
    Set dest = [F3] 'à adapter
    ncol = 3 'à adapter
    Application.ScreenUpdating = False
    If ActiveSheet.FilterMode Then ActiveSheet.showlldata 'si la feuille est filtrée
    dest(2).Resize(Rows.Count - dest.Row, ncol).Delete xlUp 'RAZ
    Set P = Range("A4", Range("A" & Rows.Count).End(xlUp)) 'à adapter
    If P.Row < 4 Then Exit Sub
    tablo = P.Resize(, ncol) 'matrice, plus rapide
    h = UBound(tablo)
    '---tableau des résultats---
    ReDim resu(1 To h * h, 1 To ncol)
    For i = 1 To h
        n = h * (i - 1) + 1
        For j = 0 To h - 1
            resu(n + j, 1) = tablo(i, 1)
            For k = 2 To ncol
                resu(n + j, k) = tablo(j + 1, k)
    Next k, j, i
    '---restitution---
    With dest(2).Resize(UBound(resu), ncol)
        .Value = resu
        .Borders.Weight = xlThin 'bordures
    End With
    End Sub
    A+
     

    Pièces jointes:

    Sirounet aime votre message.
  4. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26269
    "J'aime" reçus :
    2301
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Maintenant voici une solution par formules, sans doute préférable car très simple.

    En F4 =SIERREUR(INDEX(T;1+ENT((LIGNE()-4)/h);1);"")

    En G4 =INDEX(T;1+MOD(LIGNE()-4;h);2)

    En H4 =INDEX(T;1+MOD(LIGNE()-4;h);3)
     

    Pièces jointes:

  5. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26269
    "J'aime" reçus :
    2301
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    J'ai testé avec un tableau initial de 200 lignes, donc avec un tableau de résultat de 40 000 lignes.

    Par VBA la macro s'exécute en 0,3 seconde

    Par formules le recalcul se fait en 1,9 seconde.
     
  6. Sirounet

    Sirounet XLDnaute Nouveau

    Inscrit depuis le :
    Mardi
    Messages :
    3
    "J'aime" reçus :
    0
    Un grand merci à toi job75.

    Je vais jeter un oeil à tout ça et surtout tenter d'en tirer un enseignement ^^

    Merci encore !
     
  7. Sirounet

    Sirounet XLDnaute Nouveau

    Inscrit depuis le :
    Mardi
    Messages :
    3
    "J'aime" reçus :
    0
    J'aime beaucoup ta macro dont je tente de comprendre les subtilités job75. Merci encore d'ailleurs !

    J'ai tenté de la modifier un peu dans le but d'y introduire une variante potentielle.

    Les colonnes B et C pourraient contenir plus de lignes que la colonne A. J'aimerai pourtant que la macro, dans ce cas, incorpore aussi les lignes supplémentaires des colonnes B et C et ne s'arrête pas de lire les infos à la fin de la colonne A .

    Malgré mes tentatives je n'y arrives pas... Il me reste du chemin à faire visiblement.

    Si une âme charitable passe par là, je suis preneur d'une dernière aide !

    J'ai modifié le fichier excel avec les nouvelles informations qui sont sans doute plus claire que mon explication écrite.

    Merci d'avance !
     

    Pièces jointes:

Partager cette page