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 des cellules non vides [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Copier coller des cellules non vides
    Bonjour,
    Je suis un nouveau sur ce forum. Ma tache est de faire copier et coller des donnees dans la feuille 1 vers la feuille 2 en supprimant des cellules vides. J'ai déjà écrit une code qui me permet de faire copier et coller des cellules non vides mais je n'arrive pas à mettre mes données dans le bon ordre. Je voulais que tous les cellules contenu des numerique soient bien rangé comme je vous montre dans la feuille3. Est ce que quelcun parmi vous peut m'aider. Je suis un novice dans le macro.
    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
     
    Sub copy()
    Dim i As Integer
    Dim compteur As Integer
    Dim DernCol As Integer
    Dim DernLigne As Integer
    Dim Cell As Variant
    Dim FL1 As Worksheet, FL2 As Worksheet, Plage As Range
    Set FL1= Sheets("Feuil1")
    With FL1
                DernCol=.Range("A1").End(xlToRight).Column 'Derniere colonne
                DernLigne=.Range("A1").Cells(65536,DernCol).End(xlUp).Row ' Derniere ligne
                Set Plage =.Range("A1", .Cells(DernLigne,DernCol))
                For j=1 To Columns(Split(FL1.UsedRange.Address, "$")(3)).Column
                      Cell=""
                      compteur=0
                      For i=1 to Split(FL1.UsedRange.Address, "$")(4)
                            Cell=Plage.Cells(i,j).Value
                            If Cell<>"" Then
                                compteur=compteur+1
                                 Set FL2=Sheets("Feuil2")
                                  FL2.Cells(compteur,j).Value=Cell
                            Else:
                            End If
                      Next i
                Next j
    End With
    Set FL1=Nothing
    Set Plage= Nothing
    End Sub
    discussion.xlsx

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    voir avec :
    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 test()
    ' *****************nétoyer feuille 2
    With Sheets("feuil2")
    .Cells.Clear
    End With
     
    '*******************Nommer les titres des colonnes
        Sheets("feuil2").Cells(1, 1) = "Data"
        Sheets("feuil2").Cells(2, 1).Resize(1, 8) = Array("year", "month", "day", "hour", "", "", "sum", "condition")
     
    '********************copier 
    Dim Tablo
    Dim i As Long
    Tablo = Sheets("feuil1").Range("A3", "F" & Sheets("feuil1").Range("F" & Rows.Count).End(xlUp).Row)
    k = 3
    For i = LBound(Tablo, 1) To UBound(Tablo, 1)
        If Tablo(i, 1) <> "" Then
        Sheets("feuil2").Range("A" & k) = Tablo(i, 1)
        Sheets("feuil2").Range("B" & k) = Tablo(i, 2)
        Sheets("feuil2").Range("C" & k) = Tablo(i, 3)
        Sheets("feuil2").Range("D" & k) = Tablo(i, 4)
        Sheets("feuil2").Range("G" & k) = Tablo(i, 5)
        Sheets("feuil2").Range("H" & k) = Tablo(i, 6)
        k = k + 1
        End If
    Next i
    Sheets("feuil2").Select
    End Sub

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour BENNASR
    Pourquoi faire simple quand on peu faire compliqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Dim F1, F2, plage As Range
        Set F1 = Sheets("Feuil1"): Set F2 = Sheets("Feuil2")
        '   *********************nétoyer feuille 2 et mise des entetes de colonne
        With F2.Cells
            .Clear: .Cells(1, 1) = "Data"
            .Cells(2, 1).Resize(1, 6) = Array("year", "month", "day", "hour", "sum", "condition")
        End With
        '********************filtre et copie sur sheets (2)copier
        Set plage = F1.Range("A3:F" & F1.Range("F" & Rows.Count).End(xlUp).Row)
        With plage: .AutoFilter Field:=1, Criteria1:="<>": .Copy Destination:=F2.Cells(3, 1): End With
        '***********separation des deux dernieres colonnes
        With F2: .Columns("E:F").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove: .Select: End With
    End Sub

    le copie destination est beaucoup plus rapide qu'une boucle de filtrage dans variable tableau et transposition du tableau obtenu sur plage
    pour la separation des deux dernieres colonnes une simple insertion
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour patrick, la forum
    Je n'ai qu'à comprendre, apprendre et copier ton code dans mon bibliothèque des codes VBA
    Bonne journée

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut
    Bonjour vous deux
    Merci pour vos réponses assez rapide. Comme je viens d'entrer dans mon compte sur ce forum, je n'ai pas encore essayé de tester vos codes. Je vais faire un teste sur vos codes et vous dire si ca fonctionne bien.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut
    Je viens de tester le code de BENNASR. Votre code marche bien comme ce que je veux faire.
    ****************************************************************************
    Par contre, le code de Patricktoulon me permet presque d'obtenir un bon résultat. Votre code copie toutes les cellules meme si quelques cellules sont vides. Pouvez-vous m'aider encore une fois de faire ce que vous avez déjà fait et ajouté une partie de supprimer toutes les cellules vides.

    Je remercie à vous deux enormement.
    Cordialement,
    Mongkul

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    j'ai testé mon code avant de te le donner il fait exactement ce que tu demande avec tes captures
    si il y a modification dans ton projet il faut etre plus precis
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut
    Bonjour Patrick
    Je ne savais pas. Quand je lance le calcul dans mon PC, il apparait une ligne vide(ligne 3) dans ma feuille .

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    serait elle vide de "B" A la fin et pleine en "A" par hasard??
    je te repondrais ce soir je part la j'ai de la route a faire
    a+
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut
    Merci beaucoup, Patrick.

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bon je suis de reour
    alors que veux tu exactement?
    donne un exemple de base et le resultat
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Re
    Citation Envoyé par patricktoulon Voir le message
    bon je suis de reour
    alors que veux tu exactement?
    donne un exemple de base et le resultat
    Rebonjour
    Je vous joins un ficher excel que je voulais faire. Je voudrais faire le copier et coller de feuille 1 à feuille 3 en supprimant des cellules vides et en mettant des données numériques dans un bon ordre comme je vous ai déjà montré dans la feuille 3. J'ais besoin d'un code macro qui me permet de faire ça.

    discussion.xlsx

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    pour la mise en ordre je pige pas trop les données semblent l'etre pour le reste je te l'ai donné 2 fois deja

    une derniere fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
       With Sheets(1).Range("A1",Cells(Rows.count,1).end(xlup))
            .AutoFilter Field:=1, Criteria1:="<>"
            .Copy Destination:=Sheets("Feuil3").Range("A1")
            .AutoFilter
            With Sheets("Feuil3")
               .Activate        'pour voir le resultat
             .Columns("E:F").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
                Range("A1:D1").MergeCells = False
            End With
        End With
        Application.CutCopyMode = False
    End Sub
    Nom : demo5.gif
Affichages : 3691
Taille : 175,1 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    pour la mise en ordre je pige pas trop les données semblent l'etre pour le reste je te l'ai donné 2 fois deja

    une derniere fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
       With Sheets(1).Range("A1",Cells(Rows.count,1).end(xlup))
            .AutoFilter Field:=1, Criteria1:="<>"
            .Copy Destination:=Sheets("Feuil3").Range("A1")
            .AutoFilter
            With Sheets("Feuil3")
               .Activate        'pour voir le resultat
             .Columns("E:F").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
                Range("A1:D1").MergeCells = False
            End With
        End With
        Application.CutCopyMode = False
    End Sub
    Nom : demo5.gif
Affichages : 3691
Taille : 175,1 Ko
    Merci beaucoup , Patrick de prendre votre temps. Ce code me donne exactement ce que je voulais.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 05/03/2018, 19h05
  2. [XL-2016] probleme copier coller si cellule non vide
    Par miklmarch dans le forum Excel
    Réponses: 4
    Dernier message: 11/01/2017, 16h31
  3. [XL-2013] Copier uniquement des cellules non vides sur un autre classeur
    Par tonyfrost dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2014, 22h54
  4. Réponses: 17
    Dernier message: 27/02/2014, 21h29
  5. [XL-2007] copier/coller des cellules vers une première ligne vide
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/06/2011, 23h35

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