IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Générer / Insérer des lignes en fonction d'une valeur [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Par défaut Générer / Insérer des lignes en fonction d'une valeur
    Bonjour,

    Très novice en VBA, je n'ai pas trouvé la solution à mon problème avec les formules natives d'Excel.

    J'aimerai pouvoir générer des lignes de références produits en fonction d'un nombre associé.

    Dans le premier onglet nous avons :
    En colonne A le nom du produit.
    En colonne B sa référence.
    En colonne C un nombre associé à la référence produit.

    NOM1 REF1 2
    NOM2 REF2 4
    NOM3 REF3 1
    NOM4 REF4 8

    Dans le deuxième onglet j'ai besoin d'avoir ce résultat:

    NOM1 REF1-1C
    NOM1 REF1-2C
    NOM2 REF2-1C
    NOM2 REF2-2C
    NOM2 REF2-3C
    NOM2 REF2-4C
    NOM3 REF3-1C
    NOM4 REF4-1C
    ... ...

    Vous l'aurez compris, si le nombre associé est 3, j'ai besoin de générer 3 lignes avec concaténation de la REF avec 1C, puis 2C, puis 3C.
    En pièce jointe vous trouverez le petit fichier d'exemple.

    Merci d'avance pour votre aide précieuse !
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Option Explicit
    Sub test()
    Dim F1 As Worksheet
    Dim F2 As Worksheet
    Set F1 = Sheets("Feuil1")
    Set F2 = Sheets("Feuil2")
    Dim i As Long
    Dim j As Long
    Dim Ligne As Long
    Dim tablo
    Application.ScreenUpdating = False
        F2.Columns("A:B").ClearContents
    With F1
    tablo = .Range("A2", "B" & .Range("B" & .Rows.Count).End(xlUp).Row)
    End With
     Ligne = 2
    For i = LBound(tablo, 1) To UBound(tablo, 1)
    j = tablo(i, 2)
            For j = 1 To j
                 F2.Cells(Ligne, 1) = tablo(i, 1)
                 F2.Cells(Ligne, 2) = tablo(i, 1) & "-" & j
                 Ligne = Ligne + 1
            Next j
      Next i
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Par défaut
    Bonjour BENNASR !

    Wow, un grand merci, ça marche parfaitement !

    Nous aurions une potentielle évolution qui nous faciliterai aussi la tâche :
    Certaines de nos références peuvent avoir une lettre F comme attribut.
    Dans cette même réflexion est-ce possible d'apporter une condition pour les références concernées qui concaténerai juste la ligne avec la lettre F au sein des autres lignes ?

    Par exemple :
    Dans le premier onglet nous avons :


    REF1 2
    REF2 F
    REF3 5

    Dans le deuxième onglet cela donnerai ceci :

    REF1-1
    REF1-2
    REF2-F
    REF3-1
    REF3-2
    REF3-3
    REF3-4
    REF3-5

    Je joins le 2ème fichier d'exemple.

    Un grand merci encore une fois !
    Maxime.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    à tester toujours sur une copie de ton travail pour munir contre tous risque de perte de données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Option Explicit
    Sub test()
    Dim F1 As Worksheet
    Dim F2 As Worksheet
    Set F1 = Sheets("Feuil1")
    Set F2 = Sheets("Feuil2")
    Dim i As Long
    Dim j As Long
    Dim Ligne As Long
    Dim tablo
    Application.ScreenUpdating = False
        F2.Columns("A:B").ClearContents
    With F1
    tablo = .Range("A2", "B" & .Range("B" & .Rows.Count).End(xlUp).Row)
    End With
    Ligne = 2
    For i = LBound(tablo, 1) To UBound(tablo, 1)
    If IsNumeric(tablo(i, 2)) Then
            j = tablo(i, 2)
            For j = 1 To j
                 F2.Cells(Ligne, 1) = tablo(i, 1)
                 F2.Cells(Ligne, 2) = tablo(i, 1) & "-" & j
                 Ligne = Ligne + 1
            Next j
      Else
      F2.Cells(Ligne, 1) = tablo(i, 1)
      F2.Cells(Ligne, 2) = tablo(i, 1) & "-" & tablo(i, 2)
      End If
      If F2.Cells(Ligne, 1) <> "" Then Ligne = Ligne + 1
    Next i
     
    Application.ScreenUpdating = True
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Septembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2020
    Messages : 3
    Par défaut
    Ca fonctionne parfaitement.
    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/07/2019, 16h56
  2. insérer des lignes par rapport a une valeur dans la ligne au-dessus
    Par samihichem dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/05/2015, 09h08
  3. [2008] Requête qui duplique des lignes en fonction d'une valeur dans un champ
    Par Fredo67 dans le forum Développement
    Réponses: 6
    Dernier message: 27/01/2015, 12h03
  4. Insérer des lignes en fonction d'une cellule
    Par g.dupin.gemma dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/04/2014, 11h24
  5. [XL-2007] Extraire des lignes en fonction d'une valeur de cellule dans un autre fichier
    Par MisterTambo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/08/2009, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo