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 :

Copier/Coller d'un ensemble de cellules variables.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Mars 2018
    Messages : 11
    Par défaut Copier/Coller d'un ensemble de cellules variables.
    Bonjour à tous,

    Je viens vers vous car je dois surement passer à coté d'un élément essentiel pour que ce code VBA simple fonctionne :

    Ce code à pour but de remonter les informations d'un tableau de manière à les avoir les unes à la suite des autres comme montré sur l'image ci-dessous.
    Il m'est interdit, même si c'est plus simple, de supprimer les lignes vide dans mon cahier des charge.

    Pièce jointe 360732

    La seule Ligne de code qui me pose problème est lorsque je souhaite coller la découpe précédemment faite. J'ai essayé plusieurs méthodes mais rien a faire, l'opération de découpe se fait mais pas de collage.

    En espérant avoir mis ce poste au bon endroit du forum, pourriez vous m'aider à comprendre ce qu'il me manque s'il vous plait ?


    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 Ma_boucle_de_Tri()
     
        Dim x As Integer
        x = 2
        Dim y As Integer
        y = 0
        Dim z As Integer
        z = 28
     
        With Worksheets("Feuille1")
     
        For x = 2 To 28
        'De la ligne 2 à la ligne 28
            If IsEmpty(Cells(x, 3).Value) = True Then
            'Si la cellule testée est vide alors :
                y = x + 2
                z = z + 2
                .Range("C" & y & ":D" & z).Cut
                'Couper tout ce qui se trouve en dessous de la cellule testée jusqu'à la case 28
                y = y - 2
                z = z - 2
                .Range("C" & y & ":D" & z).PasteSpecial Paste:=xlPasteValues
                'Coller la valeur des cellules à partir de la cellule précédemment testée vide. ***C'est là que se trouve mon problème***
                y = y + 2
                z = z + 2
                'Remettre les variables aux mêmes valeurs qu'au départ de la boucle IF
            End If
            x = x + 1
        Next x
        'On recommence l'opération deux ligne en dessous jusqu'à ce que l'on atteigne la ligne 28
     
        End With
     
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    pourquoi tu ne supprime pas tout simplement les lignes vides ?????

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Mars 2018
    Messages : 11
    Par défaut Copier/Coller d'un ensemble de cellules variables.
    Bonjour,

    Comme je l'ai indiqué au début du post, Il m'est interdit, même si c'est plus simple, de supprimer les lignes vide dans mon cahier des charge.
    Il s'agit d'un simple exemple pour simplifier le problème. Cependant le document de travail original comporte, en dessous de ce tableau, plusieurs fusions et mises en formes différentes.

    En supprimant les lignes vides désiré, c'est toute la page qui remonte et donc toutes les mises en formes et fusions restent à l'endroit initial mais les valeurs des cellules remontent ce qui démonte complètement le document.

    Dès lors, je me suis contenté de trouver une autre solution qui est à deux doigts de fonctionner (ou pas..). Je code du VBA depuis 10 jours donc je peux très bien faire fausse route depuis le départ et toute solution de votre part est la bienvenue !

  4. #4
    Expert éminent
    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
    Par défaut
    Bonjour !

    Solution manuelle déjà à la portée de tout débutant :

        •   Dans la première colonne libre, utiliser une formule de calculs retournant FAUX pour les lignes pleines et VRAI pour celles vides.

        •   Trier en ordre ascendant l'intégralité de la plage sur cette colonne supplémentaire.

        •   Supprimer le contenu de la colonne supplémentaire (en fait juste temporaire) …

    Évidemment si vraiment un code est nécessaire alors en activant l'Enregistreur de macro
    puis en réitérant les manipulations une base de code est livrée sur un plateau !
    En cas de besoin d'optimisation, poster le code ainsi généré ici.     Réalisable en moins de dix lignes de code …

    Conclusion :     Penser Excel Avant VBA !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  5. #5
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    je n'ai mis aucun commentaire dans le code volontairement

    à toi de regarder

    faire fonctionner le code en pas à pas avec F8 te permettra
    de décoder mon code....

    je pense que ça fonctionne

    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
    Sub Ma_boucle_de_Triv2()
     
        Dim x As Integer
        x = 2
        Dim y As Integer
        y = 0
        Dim z As Integer
        z = 28
     
        With Worksheets("Feuille1")
     
        For x = 2 To 28 Step 2
             If IsEmpty(Cells(x, 3).Value) = True Then
                For y = x To 28 Step 2
                If IsEmpty(Cells(y, 3).Value) = False Then
                .Range("C" & y & ":D" & y + 1).Copy .Range("C" & x & ":D" & x + 1)
                .Range("C" & y & ":D" & y + 1).ClearContents
                y = 28
                End If
                Next y
                      End If
        Next x
     
        End With
     
    End Sub

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mars 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique

    Informations forums :
    Inscription : Mars 2018
    Messages : 11
    Par défaut Copier/Coller d'un ensemble de cellules variables.
    Le code de "a_diard" fonctionne et pour l'instant je grade cette solution, merci à toi !
    Il me reste un peu de temps avant de livrer mon travail alors je me penche sur les conseils de "Marc-L" pour arriver à ce que je souhaite.

    Merci pour vos reponse les gens !

    A +

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

Discussions similaires

  1. [XL-2007] Copier/coller des lignes avec des cellules verrouillées
    Par Adri687 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/01/2013, 11h25
  2. [XL-2003] Copier/coller la valeur d'une cellule
    Par mas17 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/03/2012, 09h08
  3. [XL-2003] Copier coller avec mise forme de cellule.
    Par hobine dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/12/2011, 23h39
  4. Macro copier/coller sur 2 fichiers aux noms variables
    Par ThSPB dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/04/2011, 21h25
  5. copier et fusionner un ensemble de cellules avec JExcel
    Par soufianetomase dans le forum Documents
    Réponses: 0
    Dernier message: 07/04/2009, 17h05

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