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 :

Macro Copier/ coller avec des écarts non réguliers


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut Macro Copier/ coller avec des écarts non réguliers
    Bonjour tout le monde,

    Je suis nouveau sur le forum. Etudiant en gestion, et je commence à apprendre progressivement la programmation en VBA.

    Je sollicite vos conseils car je bloque sur une macro.

    Je souhaiterais réaliser des "copier/coller" d'une cellule pour les x lignes du dessous vides mais en prenant au fur et à mesure que la boucle avance des nouvelles données.

    En d'autres termes, j'ai une liste de données avec des cellules vides, et je souhaiterais compléter ces cellules vides avec les données écrites au-dessus.
    Mon problème est que le nombre de ligne entre chaque donnée n’est pas constant, j’ai donc du mal à définir des variables.


    Pour être plus explicite, j'ai joint le fichier Excel et mon morceau de code.

    Je vous remercie grandement pour vos conseils.

    Cordialement,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    Bonjour,

    j'ai joint le fichier Excel et mon morceau de code.
    il est ou ton code ??

    https://www.developpez.net/forums/d8...s/#post6033047

    Soit un peu plus explicite

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Testes ce code. Les données devant être en colonne A de la feuille "Feuil1" et à partir de A1 sinon, adaptes :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim I As Long
     
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        For I = 1 To Plage.Count
     
            Set Cel = Plage(I).End(xlDown)
     
            Plage(I).AutoFill Range(Plage(I), Cel.Offset(-1))
            I = Cel.Row - 1
     
        Next I
     
    End Sub

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    Bonjour,
    Cela fonctionne parfaitement. Merci beaucoup!
    Nicolas, je le saurai pour la prochaine fois .
    Bon week-end !!

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    Bonjour tout le monde,
    Ce code fonctionne parfaitement. Mais je souhaiterais également sauter une ligne entre chaque série de données (cette ligne correspond au total).
    Comme ceci :

    Données de base
    Paul

    Total
    Pierre


    Total
    Etc…



    Données souhaitées après avoir fait tourner la macro :

    Paul
    Paul
    Paul
    Paul
    Total
    Pierre
    Pierre
    Pierre
    Pierre
    Pierre
    Total
    Etc…

    Theze, je ne vois pas ou il faut que j'adapte le code.
    Merci d'avance pour votre aide !
    Cordialement,

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comme ceci peut être :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim I As Long
     
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        For I = 1 To Plage.Count
     
            Set Cel = Plage(I).End(xlDown)
     
            Plage(I).AutoFill Range(Plage(I), Cel.Offset(-1))
            Cel.EntireRow.Insert xlShiftDown
            I = Cel.Row - 1
     
        Next I
     
    End Sub

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    Bonsoir,

    Cela ne fonctionne pas. je pense qu'il ne faut pas ajouter une ligne (elle y est déjà) mais plutôt sauter une ligne quand on arrive à total, pour pouvoir répéter la même opération avec les autres données.

    Au lieu des -1, j'ai essayé de changer ces paramètres mais cela de fonctionne pas.

    Je ne sais pas si je suis trés clair .

    Merci pour toute l’aide !!

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Désolé, je n'avais pas percuté !
    Voici le code avec le saut de la ligne "Total" (ou un autre nom, il n'a aucune importance !) mais attention, si une des ces lignes manque (ligne Total), les groupes d'après seront ignorés jusqu'à trouver à nouveau une paire de lignes :
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim I As Long
     
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        For I = 1 To Plage.Count
     
            Set Cel = Plage(I).End(xlDown).Offset(1) 'le décalage de +1 permet de sauter la ligne "Total"
     
            Plage(I).AutoFill Range(Plage(I), Cel.Offset(-2)) 'le décalage de -2 évite d'écraser la ligne "Total"
            I = Cel.Row - 1
     
        Next I
     
    End Sub

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 5
    Par défaut
    Bonjour,

    Il y a un problème avec la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Cel = Plage(I).End(xlDown).Offset(1)
    Je pense que le problème vient du offset.

    Je ne sais pas trop comment le résoudre.

    Merci.

  10. #10
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    C'est dû au fait que on arrive à la fin de la plage, il faut juste sortir de la boucle !
    J'ai rajouté deux lignes de code afin d'avoir le total en colonne B à virer si pas voulu !
    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
     
    Sub Test()
     
        Dim Plage As Range
        Dim Cel As Range
        Dim I As Long
        Dim Total As Integer '<-- à virer si le total des lignes de chaque groupe n'est pas voulu !
     
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        For I = 1 To Plage.Count
     
            If I = Plage.Count Then Exit Sub
     
            Set Cel = Plage(I).End(xlDown).Offset(1) 'le décalage de +1 permet de sauter la ligne "Total"
     
            Plage(I).AutoFill Range(Plage(I), Cel.Offset(-2)) 'le décalage de -2 évite d'écraser la ligne "Total"
     
            Total = Range(Plage(I), Cel.Offset(-2)).Rows.Count '<-- à virer !
     
            I = Cel.Row - 1
     
            Cel.Offset(-1, 1).Value = Total ''<-- à virer !
     
        Next I
     
    End Sub

Discussions similaires

  1. [XL-2003] Copier coller avec des conditions
    Par steph8 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/08/2011, 14h04
  2. Problème de copier/coller avec des images
    Par Brossard56 dans le forum Word
    Réponses: 9
    Dernier message: 15/03/2011, 00h00
  3. [XL-2003] copier coller avec des séparateur puis formatage sur une ligne
    Par kalwin dans le forum Excel
    Réponses: 3
    Dernier message: 17/09/2010, 19h45
  4. [XL-2000] macro copier coller avec condition ne marche pas
    Par antfo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/03/2010, 10h54
  5. Macro copier/coller avec tri
    Par Lechette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/03/2008, 12h44

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