VBA - Conditions + Boucle + For

Bonjour le forum,

Je reviens encore vers vous pour un problème sur lequel je ne sais pas comment plancher, je n'ai même aucune idée de quels fonctions je devrais utiliser...

Pour faire simple,

  • J'ai une liste de produits qui est indéfini (il peut y a voir 5 produits comme 1000 produits)
  • J'ai aussi une liste de magasin qui elle est définie (Mag 1, Mag 2 ect...)

Je dois faire un copier coller des produits dans une colonne A et la listes de magasins dans la colonnes B de cette manière :

  • Pdt 1 - Mag 1
  • Pdt 1 - Mag 2
  • Pdt 1 - Mag 3
  • Pdt 2 - Mag 1
  • Pdt 2 - Mag 2

Je ne sais pas si c'est clair...

Je vous met un fichier en pj, je pense que ca vous peux vous aider

Bonjour Skadowche !

Voici un fichier qui fais une Boucle dans une Boucle !

Il prend en compte un nombre variable de produit et de magasin ;D

Je te l'ai mis en Feuil2 du fichier ci-joint

Restant à ta dispo

10pour-skadowche.xlsm (19.61 Ko)

Bonjour,

Si j'ai compris, une proposition par formule

En G3:

=SI(LIGNES($1:1)<=NB(Produits)*3;DECALER($A$2;((LIGNES($1:1)-1)/3);0);"")

En H3:

=SI(LIGNES($1:1)<=NB(Produits)*3;DECALER($C$2;MOD(LIGNES($1:1)-1;3);0);"")

Le 3, dans la formule, correspond au nombre de magasins (qui ne varie pas, mais qu'il faudra peut-être adapter en fonction de ta situation réelle)

'Produits' est une plage de cellules nommées (voir Formules > Gestionnaire de noms) ... si tu travailles uniquement avec Excel 2013 ou supérieur, nommer la plage et la convertir en tableau est plus simple

[Edit:] Salut Juice

Bonjour,

A essayer :

Sub ProduitsMagasins()
    Dim pm(), prd, mag, p%, m%, i%, ii%, j%
    With ActiveSheet
        prd = .Range("A1").CurrentRegion.Value
        mag = .Range("C1").CurrentRegion.Value
    End With
    p = UBound(prd) - 1: m = UBound(mag) - 1
    ReDim pm(p * m, 1)
    For i = 1 To p
        ii = (i - 1) * m
        For j = 1 To m
            pm(j + ii, 0) = prd(i + 1, 1)
            pm(j + ii, 1) = mag(j + 1, 1)
        Next j
    Next i
    pm(0, 0) = prd(1, 1): pm(0, 1) = mag(1, 1)
    Application.ScreenUpdating = False
    With ActiveSheet.Range("J1").Resize(UBound(pm) + 1, 2)
        .Value = pm
        .HorizontalAlignment = xlCenter
        .Borders.Weight = xlThin
    End With
End Sub

Cordialement.

Je dois faire un copier coller des produits dans une colonne A et la listes de magasins dans la colonnes B de cette manière :

  • Pdt 1 - Mag 1
  • Pdt 1 - Mag 2
  • Pdt 1 - Mag 3
  • Pdt 2 - Mag 1
  • Pdt 2 - Mag 2

bonjour à tous

à quoi te sert de faire cette table de données à 2 colonnes, à faire un TCD ? une gestion de stocks, autre... ?

car il est possible qu'on puisse se passer de cette étape.

Re bonjour tout le monde,

C'est super les formules et les codes fonctionnent à merveille, j'ai opté pour celui de M-Ferrand parce que c'est celui que je comprend le mieux.

@ Juice : J'ai du mal a cerner ton code malgré le fait qu'il marche parfaitement bien

@jmd : Ouais cette macro a pour but de faire un TDC à la fin et oui, une sorte de gestion de stock ? Tu penses que l'on peut se passer de l'étape ?

J'attend d'avoir finis la discussion pour clore le sujet

Erwan

re

pour faire des états, comme des stocks ou des ventes, on va voir

joins un fichier tel que tu le reçois (ou celui dans lequel tu fais la saisie au clavier), avec un dessin de ce que tu veux obtenir

(un extrait fera l'affaire)

@ Juice : J'ai du mal a cerner ton code malgré le fait qu'il marche parfaitement bien

Maaaaaaah D: Pourquoi tout le monde galère à comprendre mes procédures xD

Je vais pas au plus simple ?

C'est super les formules et les codes fonctionnent à merveille, j'ai opté pour celui de M-Ferrand parce que c'est celui que je comprend le mieux.

J'en suis ravi ! On me dit plus souvent le contraire !

Rechercher des sujets similaires à "vba conditions boucle"