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 :

Erreur code:copie de données non vides sur une autre feuille


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 54
    Par défaut Erreur code:copie de données non vides sur une autre feuille
    Bonjour à tous,

    J'aimerais avoir un coup de main pour créer un code VBA qui puisse me permettre de copier des données sur une autres feuilles.

    Malheureusement je ne m'y connais pas en VBA. Cela ne m'empêche pas bien entendu de chercher sur le net et de tester . Mais malgré de nombreuses tentatives, le code ne fonctionne surement pour des raisons basiques.

    Déjà pour être sur j'ai 4 Feuilles. Je souhaite copier des données de la feuille 3 vers la feuille 4. Je dois bien écrire mon code VBA dans un module ou dans une des feuilles?

    Voici ce que j'ai écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Testcopie1()
     
    Workbooks ("Pompage v3.xls")
        .Sheets ("Matrice")
        .Range ("M7:O7"), Range("M65536:O65536").End(xlUp)
        .Copy (Workbooks("Pompage v3.xls"))
        .Sheets ("Test")
        .Range ("L5")
     
    End Sub
    Je souhaite copier toutes les données des colonnes M,N,O à partir de la ligne 7 de la feuille Matrice vers la Feuille Test à la cellule L5 (coin haut gauche du début des données).

    Ce que j'aimerais c'est que ce code après ne me copie que les lignes non vides.
    Ci joint un exemple du tableau sur lequel je travail.
    Feuil1: je souhaite copier les 3 colonnes vertes
    Feuil2: je souhaiterais que les données soient copiées en supprimant les lignes vides (ou égale à zéro)

    (pourquoi le fichier que je joins est supprimé?)


    Merci d'avance pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Bonjour,

    Voici qui devrait répondre à ton problème :

    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
    Sub Testcopie1()
     
    Workbooks("Pompage v3.xls").Range("M7:O" & Sheets("Matrice").Range("M" & Rows.Count).End(xlUp).Row) _
        .Copy Destination:=Workbooks("Pompage v3.xls").Sheets("Test").Range("L5")
     
    fin = ThisWorkbook.Sheets("Test").Range("L" & Rows.Count).End(xlUp).Row
     
    For i = fin To 5 Step -1
        If Range("L" & i) = "" Then
            Range("L" & i).EntireRow.Delete
        End If
    Next
     
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 54
    Par défaut
    Salut et merci pour ta participation.

    Tes lignes de codes 3 et 4 présentent une erreur quand je lance la macro (erreur 438)

  4. #4
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Re,

    Autant pour moi, un oublie de ma part. J'ai remanié un poil le code pour qu'il soit plus lisible.

    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 Testcopie1()
     
    Dim ShM As Worksheet, ShT As Worksheet
     
    Set ShM = Workbooks("Pompage v3.xls").Sheets("Matrice")
    Set ShT = Workbooks("Pompage v3.xls").Sheets("Test")
     
        ShM.Range("M7:O" & ShM.Range("M" & Rows.Count).End(xlUp).Row) _
            .Copy Destination:=ShT.Range("L5")
     
        fin = ShT.Range("L" & Rows.Count).End(xlUp).Row
     
        For i = fin To 5 Step -1
            If ShT.Range("L" & i) = "" Then
                ShT.Range("L" & i).EntireRow.Delete
            End If
        Next
     
     
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 54
    Par défaut
    Salut,

    merci pour ton aide.
    Juste une petite précision mais le code tu l'inseres ou?

    Dans Microsoft Excel Objects/Feuil3 ?
    Ou
    Dans Modules/Modules 1 ? (je les ai mises là)

    Quand j’exécute le code, la mise en forme des trois colonnes est respectée mais les données n'apparaissent pas.
    Pour être plus exacte, elles apparaissent et disparaissent aussitôt (comme un clignotement)....

    Est ce que dans le code, il est possible d'inclure la copie automatique?
    Je ne sais pas si tu as regardé mon fichier exemple en premier post mais les données des trois colonnes varient en fonction de deux données (DEBIT et PROFONDEUR), j'aimerais (si possible bien entendu ) que les données soient automatiquement copiées quand ces deux valeurs changent.

    Penses tu que ce soit possible? ca ferait mon plus grand bonheur.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Re,

    Je n'ouvre jamais les fichiers, on ne sait jamais.

    De ce que je comprends, les cellules copiées contiennent des formules, et tu veux les valeurs. C'est ca ?

    Si c'est le cas la nouvelle mouture du code devrait marcher. J'ai également programmé un évenement à adapter à ta feuille pour que la copie se fasse lorsque les valeurs debit et profondeur change.

    Voici le code :

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    'A copier dans le code de la feuille matrice
     
    Dim Debit As Range
    Dim Profondeur As Range
     
    Set Debit = Range("A1") 'a toi de mettre l'adresse qui va bien
    Set Profondeur = Range("A2") 'a toi de mettre l'adresse qui va bien
     
    If Not Intersect(Target, Debit) Is Nothing Or Not Intersect(Target, Profondeur) Is Nothing Then
        Call Testcopie1
    End If
     
    End Sub
    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
    Sub Testcopie1()
     
    'A copier dans un Module comme tu l'as fais
     
    Dim ShM As Worksheet, ShT As Worksheet
     
    Set ShM = Workbooks("Pompage v3.xls").Sheets("Matrice")
    Set ShT = Workbooks("Pompage v3.xls").Sheets("Test")
     
        ShM.Range("M7:O" & ShM.Range("M" & Rows.Count).End(xlUp).Row).Copy
        ShT.Range("L5").PasteSpecial Paste:=xlPasteValues
     
        fin = ShT.Range("L" & Rows.Count).End(xlUp).Row
     
        For i = fin To 5 Step -1
            If ShT.Range("L" & i) = "" Then
                ShT.Range("L" & i).EntireRow.Delete
            End If
        Next
     
    End Sub
    PS : pour une prochaine fois, précise dans ta demande si tu veux copier des valeurs, des formules etc ... car cea ne se gère pas de la même manière.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 54
    Par défaut
    Salut, merci pour tes réponses.
    J'ai testé cela tout à l'heure.

    Oui en effet ce sont des valeurs que je souhaite copier. je penserais à la préciser pour la prochaine fois. Autant pour moi.

    C'est nikel ca fonctionne

    Me permet tu de te solliciter pour une dernière chose...Vu que tu n'as pas ouvert le fichier que j'ai joins au premier poste tu n'as pas pu le voir.
    Mais je voulais savoir s'il était possible de mettre en oeuvre le faite que quand les cellules sont copiées toutes les lignes "vides" mais qui contiennent zero soient supprimées?

    En gros
    1000 1000 1000
    
    3000 3000 3000
    4000 4000 4000
    
    
    7000 7000 7000
    Soit copier en ça
    1000 1000 1000
    3000 3000 3000
    4000 4000 4000
    7000 7000 7000

  8. #8
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Re,

    Pas de probleme, remplace la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ShT.Range("L" & i) = "" Then
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ShT.Range("L" & i) = "" Or ShT.Range("L" & i) = 0 Then
    Mais meme reflexion que précemment, 0 et vide sont 2 choses différentes, attention à utiliser les bons mots si tu veux les bonnes réponses.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 54
    Par défaut
    salut,

    Vraiment un grand merci.
    Il garde la mise en forme uniquement pour la première ligne, mais c'est pas important.

    Pour ma culture VBA si je désire copier du texte contenu sur les même lignes qui sont copiées mais qui appartient à une autre colonne je dois renseigner cela dans ces lignes de code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ShM.Range("M7:O" & ShM.Range("M" & Rows.Count).End(xlUp).Row).Copy
        ShT.Range("L5").PasteSpecial Paste:=xlPasteValues
     
        fin = ShT.Range("L" & Rows.Count).End(xlUp).Row
    Exemple:
    On copie actuellement 6,7,8. SI je souhaite copier également 1?

    Oui c'est pour cela que j'ai indiqué "vide" entre guillemet. J'ai appris que c'était deux choses radicalement différentes sur excel.

    Merci pour toute dans tous les cas. Si tu passes par Nantes, je te paye un coup

  10. #10
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Re,

    Il me manque des infos,

    -En quelle colonne est ton 1 ?
    -Ou veux tu qu'il soit coller ? dans la colonne L de la feuille test, ou ailleurs.
    -Veux conserver l'écart de colonnes entre 1 et 6 ou le supprimer ?
    -Si tu veux conserver l'ecart, qu'advient il des données (conservées ? supprimées ?)

    Et fais gaffe pour le verre, j'habite reze

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 54
    Par défaut
    Citation Envoyé par Guiiand Voir le message
    Re,
    -En quelle colonne est ton 1 ?
    J'ai pas de besoin pour l'instant mais c'était pour réussir à le faire moi même si j'en ai besoin, ce qui sera surement le cas.
    Le 1 signifiait la colonne 1. Admettons que l'on a copié les valeurs en M7:N7:O7 et que je souhaite également avoir C7 (qui est du texte)

    -Ou veux tu qu'il soit coller ? dans la colonne L de la feuille test, ou ailleurs.
    Je souhaite conserver les cellules où M7:O sont copiées (L5), mais j'aimerais que les données de C soient en Q3 par exemple

    -Veux conserver l'écart de colonnes entre 1 et 6 ou le supprimer ?
    du coup aucune conservation d'écart ne m'intéresse

    -Si tu veux conserver l'ecart, qu'advient il des données (conservées ? supprimées ?)
    je veux simplement que les valeurs soient copiées

    Et fais gaffe pour le verre, j'habite reze
    Enorme, sacré coïncidence.

  12. #12
    Membre expérimenté
    Homme Profil pro
    Technicien Méthodes
    Inscrit en
    Mars 2013
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2013
    Messages : 128
    Par défaut
    Bonjour,

    Désolé, beaucoup de boulot la semaine dernière.

    Je reprends ton problème dès que j'ai un peu de temps

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/05/2014, 18h00
  2. [XL-2007] compter les cellules non vides sur une ligne
    Par tyndare36 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/02/2014, 11h30
  3. [AC-2010] Requete SOMME avec condition 'non vide' sur un autre champ
    Par LAURENTN45 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 11/12/2012, 20h46
  4. tester la presence d'un repertoire non vide sur une machine distante via rsh
    Par oursquetaire dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/05/2009, 17h47
  5. Réponses: 3
    Dernier message: 25/09/2008, 19h17

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