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 :

copie sur feuilles variables [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut copie sur feuilles variables
    Bonjour, j'ai un souci pour copier coller sur des feuilles variables.

    J'ai un devis avec des feuilles "sous détail 1", "sous détail 2", selon les besoins d'une commande etc...

    J'arrive à ajouter les feuilles, à copier la feuille devis mais c'est pour coller que je bloque je n'arrive pas à déclarer les variables correctement.

    Voici le code que j'utilise :
    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 ExportCodeFeuille ()
     
      Worksheets("Devis").Protect userinterfaceonly:=True
     
    Dim wAdd As Worksheet
          wAdd = Worksheets("Détail" + Str(Sheets.Count - 4)).Name
     
        Sheets.Add.Name = "Détail" + Str(Sheets.Count - 4)
            ActiveSheet.Move After:=Sheets("Devis")
        Sheets("Devis").Select
            Cells.Select
        Selection.Copy
              wAdd.Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
    Ce code est probablement truffé d'erreurs mais à 8h du mat j'ai pas les yeux en face des trous...
    Il accepte pas la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wAdd = Worksheets("Détail" + Str(Sheets.Count - 4)).Name
    l'indice n'appartient pas à la sélection. Si quelqu'un a une idée je suis preneur
    merci d'avance.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonjour,

    il faut enlever tes ActiveSheet, Select ..

    Pour affecter une objet à rune variable il faut utiliser set ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim wAdd As Worksheet
          set wAdd = ThisWorkbook.Worksheets("Détail" + Str(ThisWorkbook.Sheets.Count - 4))
    Comment s'appellent tes feuilles détails ? tu peu vérifier le calcul de leur nom en l'affichant, saisie ce code dans la fenêtre exécution (CTRL+G) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? "Détail" + Str(ThisWorkbook.Sheets.Count - 4)
    voir http://darkvader.developpez.com/tuto...basic-6/#LII-3


    ensuite quel est le but de la ligne suivant (sheets.Add..) ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut reponse
    Bonjour et merci pour ta sollicitude

    Le nom des feuilles est "détail 1", "détail 2" etc.

    ces feuilles sont ajoutées uniquement si la commande le nécessite en terme de volume de produits. (si le champ de saisi de la feuille devis est trop petit pour la commande).

    C'est pour cela que je veux utiliser un sheet.add avec un nom incrémenté :
    "Détail" + str(Sheets.count -4).

    Et pour chaque feuille ajoutée, effectuer la même copie du <<modèle>> représenté par la feuille "devis".

    Je vais essayer avec Set mais je crois que je l'ai déjà fait merci

    J'ai essayé le Ctrl + G mais rien n'apparait dans la fenêtre d'execution quand j'exécute la macro.

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par tompom3108 Voir le message
    ...

    Le nom des feuilles est "détail 1", "détail 2" etc.

    ...

    Citation Envoyé par bbil Voir le message
    ...tu peu vérifier le calcul de leur nom en l'affichant, saisie ce code dans la fenêtre exécution (CTRL+G) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? "Détail" + Str(ThisWorkbook.Sheets.Count - 4)
    voir http://darkvader.developpez.com/tuto...basic-6/#LII-3
    as-tu contrôlé ton calcul du nom de la feuille ??

    Pour le Set .. c'est juste pour avoir un code cohérent tu définit wAdd en worksheet .. pour l'affecter il faut utiliser Set ... après je suis pas sur que cette affectation soit nécessaire la ...


    Lors de l'appel de ton code doit-tu à chaque appel créer une nouvelle feuille ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut
    oui chaque appel de macro doit créer une nouvelle feuille "détail n+1"

    Après j'ai saisi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? "Détail" + Str(ThisWorkbook.Sheets.Count - 4)
    dans la fenêtre d'exécution mais j'obtiens rien.

    il y a truc a faire en plus ?

    bon j'ai essayé ce code, j'ai du mal avec les variables... entre autre
    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
    Sub ExportCodeFeuille()
     
    Dim wadd As Worksheets
    Dim xnom As Variant
     
    Set wadd = ThisWorkbook.Worksheets(xnom)
    Set xnom = "Détail" + Str(Sheets.Count - 4)
     
     
      Worksheets("Devis").Protect userinterfaceonly:=True
     
      Sheets.Add.Name = "Détail" + Str(Sheets.Count - 4)
            ActiveSheet.Move After:=Sheets("Devis")
     
        Sheets("Devis").Select
            Cells.Select
        Selection.Copy
              wadd.Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
     
     
    End Sub
    Evidemment ça ne marche pas...

    Le seul bout de code qui marche c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Worksheets("Devis").Protect userinterfaceonly:=True
     
      Sheets.Add.Name = "Détail" + Str(Sheets.Count - 4)
            ActiveSheet.Move After:=Sheets("Devis")
     
        Sheets("Devis").Select
            Cells.Select
        Selection.Copy
    Mon problème c'est de sélectionner la nouvelle feuille ajoutée (Dim wadd) nommée "Détail n°" puis de coller la sélection copiée dans la feuille "Devis"

    Je n'y suis pas encore . Je creuse + profondément...

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par tompom3108 Voir le message
    Mon problème c'est de sélectionner la nouvelle feuille ajoutée (Dim wadd) nommée "Détail n°" puis de coller la sélection copiée dans la feuille "Devis"

    Je n'y suis pas encore . Je creuse + profondément...
    je pensai que la copie était à réaliser de la feuille Devis vers la feuille détail..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ExporteCodeFeuille()
    Dim shDevis As Worksheet 'Définit la variable shDevis pour l'accés à cette feuille
    Dim shDetail As Worksheet 'Définit la variable pour accés à la nouvelle feuille
    Set shDevis = ThisWorkbook.Worksheets("Devis")
    shDevis.Protect userinterfaceonly:=True
    shDevis.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    Set shDetail = ActiveSheet
    shDetail.Name = "Détail " + Str(ThisWorkbook.Sheets.Count - 4) 'Attention à l'espace
     
     
    End Sub

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut ok
    Bon ça marche comme sur des roulettes

    je sais pas pourquoi je me complique la vie, ça a l'air si simple...

    Un grand merci Bbil à bientôt peut être..

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

Discussions similaires

  1. [XL-2010] copie champ liste word sur feuille excel
    Par momoju dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/11/2011, 11h27
  2. Récupération de données dans un fichier pour copie sur une feuille
    Par Maxime082 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 19/05/2011, 19h41
  3. Recherche et copie sur autre feuille
    Par pipo159 dans le forum Excel
    Réponses: 1
    Dernier message: 04/06/2008, 19h17
  4. Copies de feuilles sur une seule
    Par lucazzo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2008, 15h39
  5. recherchev sur feuille variable
    Par raymoundo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2008, 12h21

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