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 :

Insertion de ligne vierges, recopie de valeur et suppression de ligne référente. [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Insertion de ligne vierges, recopie de valeur et suppression de ligne référente.
    Bonjour à tous,

    J'ai parcouru le forum pour mon pb, j'ai bien trouvé des éléments de réponse mais je n'ai pas la connaissance nécessaire en VBA pour les combiner.. Je me tourne donc vers vous !

    Voici mon pb :

    Pdv Adresse Client Produit

    Pdv 1 Adresse 1 client 1 A
    Pdv 2 Adresse 2 client 2 B
    Pdv 3 Adresse 3 client 3 C
    Pdv 4 Adresse 4 client 4 C
    Pdv 5 Adresse 5 client 5 A


    J'aimerais automatiser ce process :
    Si le produit est A
    Alors insérer 3 lignes sous la ligne qui contient le produit
    Et recopier les colonnes "Pdv" "Adresse" et "Client"
    par contre remplacer les produits des 3 nouvelles lignes par X , Y et Z
    Et finir en supprimant la première ligne qui contenait A

    ainsi j'aurais :

    Pdv Adresse Client Produit

    Pdv 1 Adresse 1 client 1 X
    Pdv 1 Adresse 1 client 1 Y
    Pdv 1 Adresse 1 client 1 Z
    Pdv 2 Adresse 2 client 2 B
    Pdv 3 Adresse 3 client 3 C
    Pdv 4 Adresse 4 client 4 C
    Pdv 5 Adresse 5 client 5 X
    Pdv 5 Adresse 5 client 5 Y
    Pdv 5 Adresse 5 client 5 Z

    J'espère être clair,

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Cela devrait faire ce que tu souhaites

    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
    Dim i As Long
    Dim j As Integer
     
    i = 1
    Do While Range("A" & i).Value <> ""
     
        If Range("D" & i).Value = "A" Then
            For j = 1 To 2
                Rows(i + 1).Insert
                Range("A" & i & ":C" & i).Copy Range("A" & i + 1)
                Range("D" & i).Value = "X"
                Select Case j
                    Case 1
                        Range("D" & i + 1).Value = "Z"
                    Case 2
                        Range("D" & i + 1).Value = "Y"
                End Select
            Next j
        End If
     
        i = i + 1
    Loop
    En considerant que les données commencent ligne 1 (sans en tetes)

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Avant tout, merci pour votre réponse.

    Lorsque je compile la macro, une erreur survient en surlignant le "1" de

    i = 1

    "Instruction incorrecte à l'extérieur d'une procédure"

    Peut-être s'agit-il d'un problème d'utilisation ?

    Je colle le code dans Microsoft Visual Basic dans la feuille concernée puis je clique sur Débogage / Compiler VBAproject, et cette erreur apparait.

    De plus, en regardant votre code, je ne comprend pas comment la ligne contenant A serait supprimée ?

    Merci pour le temps consacré à mon pb

    Cordialement

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    tu dois mettre quand même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub kuku()
    'le code fourni clef en main
    end sub
    la ligne contenant A n'est pas supprimée, le A est remplacé par le X
    si tu regardais le code, il insère 2 lignes et modifie la première (au cas ou produit=A)

  5. #5
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bjr, zewho, jfontaine

    il faut coller le code de jfontaine dans une procédure, tel quel c sur ça ne marche pas. C'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Essai ()
    
    'Colle ici le code de jfontaine ......
    
    End Sub
    Dans le code de jfontaine il manque l'instruction "Sub" qui commence une procédure, et "End Sub" qui la termine. Lecode est entre les deux.



    Tu mets tout ça dans un module.

    A+

    EDIT: Bjr Mercatog dsl de faire doublon on a poster ensemble

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci beaucoup pour vos réponses, cela fonctionne à merveille !

    Cordialement

    Solution :
    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
     
    Sub eclate()
     
     
    Dim i As Long
    Dim j As Integer
     
    i = 1
    Do While Range("A" & i).Value <> ""
     
        If Range("D" & i).Value = "A" Then
            For j = 1 To 2
                Rows(i + 1).Insert
                Range("A" & i & ":C" & i).Copy Range("A" & i + 1)
                Range("D" & i).Value = "X"
                Select Case j
                    Case 1
                        Range("D" & i + 1).Value = "Z"
                    Case 2
                        Range("D" & i + 1).Value = "Y"
                End Select
            Next j
        End If
     
        i = i + 1
    Loop
     
    End Sub

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

Discussions similaires

  1. Recopier de valeur jusqu'à la dernière ligne
    Par Sherman750 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/11/2012, 19h44
  2. [XL-2003] Insertion d'une ligne avec recopie des formules ?
    Par OtObOx dans le forum Excel
    Réponses: 6
    Dernier message: 31/03/2012, 22h00
  3. [usebackq] for /f - recopier la 1er valeur de la 3em ligne
    Par new-dmx dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 29/01/2009, 18h06
  4. Insertion ligne vierge automatique
    Par piloo dans le forum Excel
    Réponses: 1
    Dernier message: 12/06/2007, 09h35
  5. [VBA-E]Insertion ligne avec Recopie Formule
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/01/2007, 14h02

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