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 :

[Debutant] "Ciblé" des données


Sujet :

Macros et VBA Excel

  1. #21
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Toujours cette même erreur j'ai encore essayer avec un fichier tout simple avec la fonction range un code tout simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("A1").Select
    Ca marche mais dés que je met avec la fonction Sheets ca ne marche pas me donne l'erreur 9. pouvez-vous m'envoyer si vous avez une macro toute simple que j'essaierais d'executer pour voir. Merci beaucoup.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  2. #22
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Sinon pour pas avoir de problème avec le nom de la feuille, il existe le numéro d'index des feuilles. C'est simple, ca remplace le nom de la feuille par son numéro, 1ere feuille = sheets(1), 2eme feuille = sheets(2), etc...

    Essaie donc avec ca, j'ai essayé chez moi ca fonctionne
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  3. #23
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Ok mais comment fait-on pour avoir le numéro d'indexation d'une feuille j'ai créer un fichier excel qui s'appèle fichier et un autre Classeur2 (surlequel j'utilise ma macro) mais comment savoir le numéro d'indexation de ces feuilles?
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  4. #24
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Les numéros d'index sont toujours les mêmes et ils ne prennent pas en compte le nom des feuilles. Sheets(1) c'est ta première feuille dans le classeur actif, Sheets(2) c'est la deuxième etc....

    Si ta feuille au nom super compliquée est la 3ème dans l'ordre, bah alors se sera pour elle Sheets(3).

    Par contre, si tu veux selectionner un autre classeur il te faudra mettre le nom de ton classeur avant Sheets :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("NOM_DU_CLASSEUR").Sheets(3).copy
    Par exemple.
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  5. #25
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Alors ca a l'air de marcher avec les numéro d'index des feuilles seulement dans mon 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
     
    Sub Transfert()
     
    ChDir "C:\Documents and Settings\avrilb\Bureau"
     
    Workbooks.Open Filename:= _
            "C:\Documents and Settings\avrilb\Bureau\Fichier.xls"
     
    Sheets(1).Select
    Columns.Copy ("C")
    Workbooks("Fichier").Sheets(1).Range("A1").Paste
     
     
    End Sub
    Il me donne l'erreur 438 :
    Propriété ou méthode non générer par cet objet.
    Et l'erreur se situe sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("Fichier").Sheets(1).Range("A1").Paste
    En faite je veux copier les valeurs de la colonne C contenu dans la feuille du classeur ou est ma macro dans la feuille 1 du classeur Fichier dans la colonne A.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  6. #26
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Ok, la c'est encore moi.

    A la fin mets au lieu de Paste : PasteSpecial

    Ca devrait marcher. Il a un peu de mal avec la méthode Paste, va savoir pourquoi.
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  7. #27
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Alors j'ai recommencer a 0 et la déjà c'est mieux en faite ce que je voudrais faire a titre d'entrainement c'est copier 1 valeurs (numériques) se trouvant dans ma colonne A1 (cette feuille se trouve dans un classeur nommé Classeur2 en feuille 1) et ensuite la coller dans un autre classeur s'appelant Fichier sur la feuille 1 en colonne B1.

    Mon code ne génére aucune erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Transfert()
     
    ChDir "C:\Documents and Settings\avrilb\Bureau"
    Workbooks.Open Filename:= _
                    "C:\Documents and Settings\avrilb\Bureau\fichier.xls"
     
    Sheets("Feuil1").Select
    Range("A1").Copy
    Workbooks("Fichier").Sheets("Feuil1").Range("B").PasteSpecial
     
     
    End Sub
    Le problème c'est que les valeurs ne sont pas copier dans mon classeur Fichier en feuille 1.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  8. #28
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    J'ai changer mon code en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("B1").PasteSpecial
    Mais il ne copie pas la valeur
    Merci d'avance
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  9. #29
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub Transfert()
     
    ChDir "C:\Documents and Settings\AVRIL\Bureau"
    Workbooks.Open Filename:= _
                    "C:\Documents and Settings\AVRIL\Bureau\reception.xls"
     
    Sheets("Feuil1").Select
    Range("A1").Copy
    Workbooks("reception").Sheets("Feuil1").Range("B1").PasteSpecial
     
     
    End Sub
    Le code ne génère pas d'erreur mais le contenu de la cellule A1 n'est pas coller dans le contenu de la cellule B1 de la feuille Feuil1 du classeur reception. J'ai peut-être fait une erreur dans le code pourtant le focus est bien positionner en B1.
    Voilà Merci d'avance pour votre aide.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  10. #30
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    A ce niveau mon cher, désolé que mes conseils n'aient pas porté tant de fruits que ca, mais à ce niveau il faut utiliser l'enregistreur de macro Excell.
    Fait toutes les opérations en enregistrant et après regarde le code voir ce qu'il va pas.
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  11. #31
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour à tous

    Quand dans une macro, tu ouvres un autre classeurs excel, ce deuxieme classeur devient actif.

    Quand tu fais : Range("C:C").copy c'est dans ce classeur qu'il prend les informations donc si je ne m'abuse, dans le classeur fichier, la colonne C doit etre vide

    Si tu as des valeurs dans ta colonne C

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(1).sheets("Nomdetafeuil").range("C:C").copy Destination:=workbooks(2).sheets(1).range("A1")
    Si tu as des formules, il faut copier uniquement les valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks(1).sheets("nomdetafeuille").range("C:C").copy
    Workbooks(2).select : Sheets(1).select : range("A1").select
    selecton.pastespecial xlpastevalues
    Bonne journée
    Wilfried

  12. #32
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    J'enregistre ma macro non le problème c'est que je ne vois pas ou se trouve l'erreur dans mon code car je séléctionne la feuille1 de mon classeur2 puis je copie la valeur contenu en cellule A1 puis je la colle dans la feuille1 de mon classeur Fichier le code ne génére pas d'erreur de programmation mais le programme ne fait pas ce que j'attend.

    Et quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub Transfert()
     
    ChDir "C:\Documents and Settings\avrilb\Bureau"
    Workbooks.Open Filename:= _
                    "C:\Documents and Settings\avrilb\Bureau\fichier.xls"
     
    Workbooks("Classeur2").Sheets("Feuil1").Select
    Range("A1").Copy
    Workbooks("Fichier").Sheets("Feuil1").Range("B1").PasteSpecial
     
    End Sub
    Le code me génère une erreur d'execution 1004 : "la méthode select de la classe worksheet à échoué".
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  13. #33
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    C 'est bon j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Transfert()
     
    ChDir "C:\Documents and Settings\avrilb\Bureau"
    Workbooks.Open Filename:= _
                    "C:\Documents and Settings\avrilb\Bureau\fichier.xls"
     
    Workbooks("Classeur2").Sheets("Feuil1").Range("A1").Copy
    Workbooks("Fichier").Sheets("Feuil1").Range("B1").PasteSpecial
     
    End Sub
    Apparement il faut directement copier l'element et ne pas selectionner auparavant voilà j'éspère que ca aidera des gens.
    (Merci tout particulièrement a swiper)
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

  14. #34
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Mais oui !!! Suis-je bête !!!!

    En fait dans le code d'avant il fallait mettre à la place de Range("A1").copy --> Selection.Copy

    Enfin bref tu as trouvé j'espère que tu pourras avancer par étape comme tu as vu ici ( en découpant en module plusieurs actions)

    A la prochaine,
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  15. #35
    Membre habitué Avatar de benjiprog
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 134
    Points
    134
    Par défaut
    Ba en réalité j'ai pas vraiment découper en plusieurs module, c'est juste une macro. Le problème venait de moi car j'ai confondu le classeur avec les feuilles.
    Les élèves glandeurs c'est comme le linge, quand il fait beau ca sèche.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Debutant] Conception du traitement des données
    Par badack dans le forum JDBC
    Réponses: 6
    Dernier message: 04/01/2007, 15h13
  2. Réponses: 22
    Dernier message: 05/07/2006, 15h21
  3. [Debutant] comment faire passer des donnée ???
    Par cyrill.gremaud dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 17/01/2006, 22h28

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