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 :

insérer des lignes par rapport a une valeur dans la ligne au-dessus


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut insérer des lignes par rapport a une valeur dans la ligne au-dessus
    bonjours,
    je veux créer une macro
    je veux insérer des ligne par rapport a une valeur dans la ligne au_dessus
    exemple
    A1= 10 insérer 10 ligne
    coller les données dans
    C1,E1,F1
    pour B1 C'est une date alors sera la date de B2=B1+1,B3=B2+1..........B10=B9+1
    je vous envoi en pièce jointe la table.

    Mercie d'avance!
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Bonjour,

    pour créer le code, activer le Générateur de macros puis effectuer les manipulations : une base est livrée sur un plateau !



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Salut je suis vraiment nouveau dans le vba excel
    so can u please tel me exactly se que je dois faire please

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour

    Essaie ceci:

    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
    Sub tt()
     
        Dim debut As Long, lig As Long, nbr As Long, i As Long, period As String, r
        Dim ligne As Range
     
        debut = 2
        lig = debut + 1
        period = Cells(lig - 1, 1)
        While period <> "n"
            If Val(Cells(lig - 1, 1)) > 0 Then
                nbr = Cells(lig - 1, 1)
            Else
                nbr = 0
            End If
            For i = 1 To nbr - 1
                r = lig & ":" & lig
                Set ligne = Rows(r)
                Application.CutCopyMode = False
                ligne.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Set r = Range("B" & lig - 1 & ":" & "F" & lig - 1)
                r.AutoFill Destination:=r.Resize(2), Type:=xlFillDefault
                lig = lig + 1
            Next
            lig = lig + 1
     
            period = Cells(lig - 1, 1)
        Wend
     
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Docmarti
    jai essayé le code la macro march très bien
    sauf un petit problème de collage
    lorsque j'ai un nombre c'est ok
    mais lorseque jai par exemple C1 dans la ligne ça me donne une chaine dans les lignes ci dessous
    C1
    C2
    C3
    cordialement
    samihichem

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par samihichem Voir le message
    sauf un petit problème de collage
    lorsque j'ai un nombre c'est ok
    mais lorseque jai par exemple C1 dans la ligne ça me donne une chaine dans les lignes ci dessous
    C1
    C2
    C3
    cordialement
    samihichem
    Avec la poignée de recopie, "C1" sera incrémenté ou pas, dépendamment de sa position dans le champs à recopier. Idem pour un nombre qui sera incrémenté ou pas selon sa position dans le champs à recopier. Pour supprimer l'incrémentation, tu n'as qu'à copier les valeurs originales vers la ligne destination.

    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
    34
    Sub tt()
     
        Dim debut As Long, lig As Long, nbr As Long, i As Long, period As String, r, rc, rc2
        Dim ligne As Range
     
        debut = 2
        lig = debut + 1
        period = Cells(lig - 1, 1)
        While period <> "n"
            If Val(Cells(lig - 1, 1)) > 0 Then
                nbr = Cells(lig - 1, 1)
            Else
                nbr = 0
            End If
            For i = 1 To nbr - 1
                r = lig & ":" & lig
                Set ligne = Rows(r)
                Application.CutCopyMode = False
                ligne.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Set r = Range("B" & lig - 1 & ":" & "F" & lig - 1)
                r.AutoFill Destination:=r.Resize(2), Type:=xlFillDefault
                'Copie des valeurs qui ne doivent pas être incrémentées
                Set rc = Range("C" & lig - 1 & ":" & "F" & lig - 1)
                Set rc2 = rc.Offset(1)
                rc2.Value = rc.Value
     
                lig = lig + 1
            Next
            lig = lig + 1
     
            period = Cells(lig - 1, 1)
        Wend
     
    End Sub

  7. #7
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Yes......... it works very well !!!!!!
    merci beaucoup u are star.

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

Discussions similaires

  1. [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
  2. Réponses: 6
    Dernier message: 07/11/2011, 08h06
  3. [XL-2007] Recherche d'une position par rapport a une valeur
    Par 0x44-0x43-0x53-0x43 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/02/2010, 11h17
  4. Réponses: 8
    Dernier message: 23/11/2007, 17h46
  5. Réponses: 10
    Dernier message: 20/07/2007, 12h01

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