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 plage de cellules vers une autre feuille selon un critère dans une boucle [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Points : 36
    Points
    36
    Par défaut Copier plage de cellules vers une autre feuille selon un critère dans une boucle
    Bonjour,

    Je viens vers vous car je ne comprends pas ce qui se passe avec ma macro. Je pensais que le code est bon, à croire que non puisque j'ai une erreur 1004 "erreur définie par l'application ou par l'objet", qu'Excel me situe au premier range que je fais.

    Je demande à ce que tout le temps qu'un critère ne soit pas vide et si un autre critère est validé, qu'une plage de cellules soient copiées dans une autre feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Ligne
    Dim P, R As Object
     
    Ligne = 3
    Set P = Sheets("Principal")
    Set R = Sheets("Recap Commissions")
        Do While Cells(Ligne, 1) <> ""
            If Cells(Ligne, 12) = "Validé" Then
                Range(Cells(Ligne, 1)).Copy R.Range(Cells(Ligne, 1))
                Range(Cells(Ligne, 35), Cells(Ligne, 51)).Copy R.Range(Cells(Ligne, 2))           
            End If
        Ligne = Ligne + 1
        Loop
    End Sub
    Si quelqu'un sait ce qui ne va pas, je suis extrêmement preneur !

    Merci !

  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 677
    Points
    18 677
    Par défaut




    Bonjour, bonjour !

    Si un Range n'a qu'une cellule, utiliser soit Range soit Cells mais pas les deux ‼




    __________________________________________________________________________________________________
    Tous unis, tous Charlie
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 273
    Points : 91
    Points
    91
    Par défaut
    Il me semble que tu as oublié un ".past" pour coller ce que tu as copié.

    Attention il me semble que tu ne te sers pas de ta variable "P"

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Effectivement, j'ai oublié de virer la variable "P" !

    Je teste en utilisant que range ou Cells pour une seule cellule !
    Merci !

    Après Test, ça fonctionne effectivement super bien, voici le code corrigé !

    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
    Sub Actualisation_Commissions()
    Dim Ligne, Ligne2
    Dim R As Object
     
    Ligne = 3
    Ligne2 = 3
    Set R = Sheets("Recap Commissions")
        Do While P.Cells(Ligne, 1) <> ""
            If Cells(Ligne, 12) = "Validé" Then
                Cells(Ligne, 1).Copy R.Cells(Ligne2, 1)
                Range(Cells(Ligne, 35), Cells(Ligne, 51)).Copy R.Cells(Ligne2, 2)
                Ligne2 = Ligne2 + 1
            End If
        Ligne = Ligne + 1
        Loop 
    End Sub
    Il ne me manque plus qu'à faire un peu "d'esthétique" maintenant !

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 273
    Points : 91
    Points
    91
    Par défaut
    Personnellement je n'utilise plus le copy / past. Je trouve ça trop lourd.

    j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(i,j).value= cells(x,y).value
    comme ça je récupère que la valeur de la cellule.

    Après c'est un choix personnel.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par Mrfreeze117 Voir le message
    Personnellement je n'utilise plus le copy / past. Je trouve ça trop lourd.
    comme ça je récupère que la valeur de la cellule.
    C'est vrai que ça peut être pas mal aussi, après vu que je n'utilise pas de formule dans mon tableau, j'ai tout passé en vb pour justement ne pas avoir à gérer les formules. Mais j'y penserai la prochaine fois que j'aurais un tableau avec des formules, ça pourra m'être, je pense, bien utile !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/04/2015, 16h41
  2. Réponses: 2
    Dernier message: 27/06/2014, 11h50
  3. Réponses: 1
    Dernier message: 23/03/2013, 08h51
  4. [XL-2010] Trier des valeurs dans une feuille et les mettre dans une autre feuille
    Par maharo1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2011, 15h02
  5. Réponses: 2
    Dernier message: 05/10/2007, 23h49

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