Création
d'entreprise
Posez votre question Signaler

VBA Excel - Copier des lignes si condition [Résolu]

jacktbio2 2Messages postés 17 août 2011Date d'inscription 17 août 2011Dernière intervention - Dernière réponse le 17 août 2011 à 14:34
Bonjour,
Je sollicite votre aide pour réaliser une macro dans Excel 2003.
Voici mon tableau :
A..............................B
Fruit ................ Banane - L:9900 LE5:9907 10cl:9920
Légumes ........ Courgette - 30cl:3043 L:4356
Conserve ....... Sardine - L:8760 L:7883 30cl:1289 40cl:9912 40cl:9913
Je souhaiterai que pour chaque code à 4 chiffres qui suivent les ":", une ligne soit créée en dessous en recopiant la ligne et en indiquant dans la colonne C le code à 4 chiffres.
Dans toutes les lignes, les codes à 4 chiffres à utiliser sont précédées de ":".
Résultat souhaité :
A .................................B .................................................................................... C
Fruit ............... Banane - L:9900 LE5:9907 10cl:9920 ...................................... 9900
Fruit ............... Banane - L:9900 LE5:9907 10cl:9920 ...................................... 9907
Fruit ............... Banane - L:9900 LE5:9907 10cl:9920 ...................................... 9920
Légumes ....... Courgette - 30cl:3043 L:4356 ................................................... 3043
Légumes ....... Courgette - 30cl:3043 L:4356 ................................................... 4356
Conserve ....... Sardine - L:8760 L:7883 30cl:1289 40cl:9912 40cl:9913 ......... 8760
Conserve ....... Sardine - L:8760 L:7883 30cl:1289 40cl:9912 40cl:9913 ......... 7883
Conserve ....... Sardine - L:8760 L:7883 30cl:1289 40cl:9912 40cl:9913 ......... 1289
Conserve ....... Sardine - L:8760 L:7883 30cl:1289 40cl:9912 40cl:9913 ......... 9912
Conserve ....... Sardine - L:8760 L:7883 30cl:1289 40cl:9912 40cl:9913 ......... 9913
Pensez-vous que celà est possible ?
Merci de votre aide.
PS. Je n'ai pas réussi à faire des espaces pour simuler les collones, j'ai donc mis des ".". Désolé
Lire la suite 

VBA Excel - Copier des lignes si condition »

2 réponses
Réponse
+1
moins plus
Bonjour,

une proposition :
Sub copieLig()
    Dim lig As Long, pos As Long, ch As String, ok As Boolean
    Application.ScreenUpdating = False
    For lig = [B65536].End(xlUp).Row To 2 Step -1
        ch = Cells(lig, 2): pos = 0: ok = False
        While InStr(pos + 1, ch, ":")
            pos = InStr(pos + 1, ch, ":")
            Cells(lig, 2).Offset(0, 1) = Mid(ch, pos + 1, 4)
                Cells(lig, 1).Resize(1, 3).Copy
                Rows(lig + 1).Insert Shift:=xlDown
                ok = True
        Wend
        If ok Then Rows(lig).EntireRow.Delete
    Next lig
    Application.ScreenUpdating = True
End Sub

http://www.cijoint.fr/cjlink.php?file=cj201108/cij9HM1Y3Y.xls
Les codes seront en sens inverse de leur apparition (plus simple). Si c'est nécessaire on complètera...

eric
Ajouter un commentaire
Réponse
+0
moins plus
Fantastique Eric,
C'est exactement ce dont j'avais besoin. Je te remercie énormément pour ton aide et surtout pour ta rapidité de réponse.

Merci mille fois.
Ajouter un commentaire
Ce document intitulé « VBA Excel - Copier des lignes si condition » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?