XL 2013 Distribution de données basiques

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 !

Sirounet

XLDnaute Nouveau
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

Bonjour Sirounet, bienvenue sur XLD,

Voici une solution VBA avec cette macro :
Code:
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

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

- 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

Discussions similaires

Réponses
10
Affichages
204
Réponses
4
Affichages
1 K
Retour