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 :

copy avec une variable plage qui ne marche pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut copy avec une variable plage qui ne marche pas
    je fais un sub qui s'appelle copy_col_f1f2_Sf2(plage) avec une variable plage et quand j'appelle ca ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call copy_col_f1f2_Sf2(Range("c10:c50"))
    je ne comprends vraiment pas .merci pour votre aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub copy_col_f1f2_Sf2(plage)
    nom_f2 = ActiveWorkbook.Name
    name_f1 = "PI15.xlsx": Set ws1 = Workbooks(name_f1)
    ws1.Activate: ws1.Worksheets(1).plage.Copy
    Set ws2 = Workbooks(nom_f2): ws2.Activate: ActiveSheet.Select
    ActiveCell.PasteSpecial Paste:=xlValues 'coller que valeur'
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    1) Dans quelle feuille de quel classeur se trouve ta plage c10:c50 ?
    2) pends la bonne habitude de déclarer le type des paramètres passés à une procédure -->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sub copy_col_f1f2_Sf2(plage as range)
    3) prends également la bonne habitude de typer les variables que tu utilises -->> où et comment as-tu par exemple déclaré les variables ws1, ws2, nom_f2 et name_f1 ?

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    Merci pour ton aide unparia.
    plage c10:c50 se trouve dans feuille name_f1 = "PI15.xlsx"

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    personne n'a une idée?
    J'en aurai peut-être lorsque tu auras bien voulu prendre la peine de relire le point 3) de mon message précédent, corriger ton code comme il se doit et répondre à la question posée.

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par bigs3232 Voir le message
    ca ne marche pas
    "Ca ne marche pas", c'est un peu léger comme description de problème...
    Qu'est-ce qui se passe ?
    Ca bug ? Quel message d'erreur ? Quelle ligne de code est signalée ?
    Ca ne fait pas ce que tu souhaites ? Qu'est-ce que ça fait ? Qu'est ce que tu voudrais que ça fasse ?
    Autre ?

    As-tu essayé de mettre en place la solution proposée ?
    Est-ce que ça change quelque chose ?

    Petite remarque : mettre plusieurs instructions sur la même lignes séparées par ":", c'est une mauvaise idée.
    Utilisé exceptionnellement, ça peut être utile mais utilisé systématiquement, ça donne un code illisible.

    ws1.Activate
    Cet Activate est inutile (comme la plupart des Activate) étant donné que tu rappelles le nom de classeur dans la ligne suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws1.Worksheets(1).plage.Copy
    On ne mets pas les parents (workbook, worksheet) d'une variable de type Range.
    La spécification de la variable pointe sur une plage unique qui intègre le nom des parents.
    Autrement dit, "plage" est le "C10:C50" de la feuille active au moment du Call.

    Ca c'est complètement inutile : tu actives la feuille active...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.PasteSpecial Paste:=xlValues 'coller que valeur'
    Tu colles dans la cellule active d'un classeur qui n'était pas actif ??? C'est un peu comme jouer aux fléchettes les yeux bandés.

    Bref, il y a de nombreux problèmes dans ton code, bien plus que ceux que j'ai signalés (étant donné que tu ne dis pas ce qu'est supposé faire ton code, difficile de savoir à quel point il est buggé).
    Donc prends la peine d'un peu nettoyer.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    j'ai suivi vos conseils en refaisant ces 2 sub
    sub aa2test appelle Sub copy_col_f1f2_Sf2(plage As Range)
    je suis sur la feuille ou il y a les codes VBA et je cherche à selectionner une plage Range("g10:g13") dans la feuille PI15.xlsx
    et ca me mets cet erreur
    Nom : bug.jpg
Affichages : 231
Taille : 49,1 Ko


    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 copy_col_f1f2_Sf2(plage As Range)
    Dim ws1 As Worksheet
    nom_f_s = ActiveWorkbook.Name
    name_f1 = "PI15.xlsx"
    Set ws1 = Workbooks(name_f1).Worksheets(1)
    'ws1.Activate
    ws1.plage.Select
    End Sub
     
    Sub aa2test()
    Dim plage As Range
    Set plage = Range("g10:g13") 
    Call copy_col_f1f2_Sf2(plage)
    End Sub

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par bigs3232 Voir le message
    Bis (en remplaçant C10:C50 par G10:G13 dans l'explication).
    Citation Envoyé par Menhir Voir le message
    On ne mets pas les parents (workbook, worksheet) d'une variable de type Range.
    La spécification de la variable pointe sur une plage unique qui intègre le nom des parents.
    Autrement dit, "plage" est le "C10:C50" de la feuille active au moment du Call.

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    627
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 627
    Par défaut
    franchement je ne comprends rien à ce bug.c'est quand meme galere cette histoire.tester dans tous les sens mais rien ne marche.j'ai un peu de mal a comprendre le concept de copier les données d'une feuilles à une autre

  9. #9
    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 !

    Pourtant ce n'est vraiment pas compliqué !

    Consulter dans l'aide VBA interne la méthode Range.Copy et en renseignant son paramètre Destination.
    Plein d'exemples dans les discussions de ce forum …

    Sinon activer l'Enregistreur de macro puis opérer manuellement : une base de code est ainsi générée !
    A publier ici si besoin de l'optimiser …

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

  10. #10
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par bigs3232 Voir le message
    franchement je ne comprends rien à ce bug.
    Qu'est-ce que tu ne comprends pas dans mon explication ?

    c'est quand meme galere cette histoire.tester dans tous les sens mais rien ne marche.
    j'ai un peu de mal a comprendre le concept de copier les données d'une feuilles à une autre
    Ton problème n'a rien à voir avec la copier. C'est l'utilisation d'une variable de type Range que tu ne comprends pas.

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

Discussions similaires

  1. une fonction supprime qui ne marche pas!
    Par hindou90 dans le forum C
    Réponses: 17
    Dernier message: 06/02/2010, 12h26
  2. lien PHP avec arret sur image qui ne marche pas
    Par MYBEE DESIGN dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 12/09/2009, 19h17
  3. une condition simple qui ne marche pas
    Par NulenVBA dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2008, 18h34
  4. Réponses: 2
    Dernier message: 14/02/2008, 19h31
  5. requete SQl avec la fonction max () qui ne marche pas
    Par eclipse012 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 14h32

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