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/coller et autres questions [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 18
    Par défaut Copier/coller et autres questions
    Bonjour,

    j'ai commencé le VBA il y a quelques jours pour automatiser un traitement de données. Mais, je suis confronté à un problème que je n'arrive pas à résoudre.

    Le logiciel que j'utilise me permet d'exporter les données sous Excel, sous la forme d'un fichier avec une unique feuille de calcul. Je souhaite composer un ensemble de macros permettant de sortir rapidement des courbes et de les exploiter.

    Dans ce but, je comptais dans un premier temps créer de nouvelles feuilles dans ce fichier, et couper/coller les données afin de les classer, par série de donnée. Mais là au moment de coller mes données dans une autre feuille, je suis confronté à un problème qui, malgré mes efforts, persiste.

    Je sollicite donc votre aide.

    Voici le code, et le message d'erreur.

    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
    Option Explicit
    Sub Initialize()
    ActiveSheet.Name = "Traitement"
    Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Synthèse"
    Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Données Brutes"
    Worksheets("Traitement").Activate
    Call BrutMove
    End Sub
     
    Sub BrutMove()
    Dim CelJour As Range, L As Long, Brut As Range
    Set CelJour = Cells.Find("Jour ")
    If Not CelJour Is Nothing Then L = CelJour.Row
    Set Brut = Range(Cells(L, 1), Cells(L + 8761, 160))
    Brut.Cut
    'Worksheets("Données Brutes").Activate
    ThisWorkbook.Worksheets("Données Brutes").Range("A1").Paste
    End Sub
    L'indice n'appartient pas à la sélection.
    Mes macros sont liées à un autre fichier que celui où je souhaite traiter mes données. A ce propos, comment fait-on pour enregistrer des macros de manière "générale", c'est à dire n'étant pas enregistrées avec un classer excel ?

    Je suis aussi ouvert à toute proposition sur la manière d'organiser ce travail : est-ce plus pratique/facile/mieux de faire un fichier où les macros seront centralisées et d'aller chercher ensuite les données dans le fichier (qui porte un nom variable selon l'étude) ?

    Merci d'avance à tous,

    4A

  2. #2
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut
    Avec quelques corrections :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     
    Dim F_trait As Worksheet
    Dim F_Synt As Worksheet
    Dim F_Donn As Worksheet
     
    Public Sub Initialize()
     
    Set F_trait = ActiveSheet
    F_trait.Name = "Traitement"
     
    Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
     
    Set F_Synt = ActiveSheet
    F_Synt.Name = "Synthèse"
     
    Worksheets.Add.Move after:=Worksheets(Worksheets.Count)
     
    Set F_Donn = ActiveSheet
    F_Donn.Name = "Données Brutes"
     
    Call BrutMove
    End Sub
     
    Private Sub BrutMove()
        Dim CelJour As Range, L As Long, Brut As Range
     
    With F_trait
        last_cell = .Range("A1").End(xlDown).End(xlToRight).Address
     
        Set CelJour = .Range("a1:" & last_cell).Find("Jour ", LookIn:=xlValues)
        If Not CelJour Is Nothing Then
            L = CelJour.Row
            .Range(.Cells(L, 1), .Cells(L + 8761, 160)).Cut
            ActiveSheet.Paste Destination:=F_Donn.Range("A1")
     
        End If
    End With
     
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 18
    Par défaut
    Merci beaucoup pour cette réponse.

    Il m'a juste fallu redéfinir la last_cell car je dispose de trois plages de données dans mon fichier.

    Sinon, pour en revenir à un autre point de mes questions : comment fait on pour avoir une macro qui ne soit pas liée à un fichier particulier ? Que l'on puisse l'ouvrir depuis n'importe quelle classeur, sans qu'aucun autre ne soit ouvert ?

  4. #4
    Membre éclairé
    Avatar de yoyo3d
    Homme Profil pro
    Administratif
    Inscrit en
    Avril 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2002
    Messages : 421
    Par défaut
    Salut, je ne suis pas certain de ma réponse donc avis aux connaisseurs.
    j'ai un classeur XL dans lequel j'enregistre toutes mes macros.

    lorsque tu enregistre une macro tu à la possibilité de l'enregistrer dans le "classeur de macro personnelle"...

    cela me sert pour créer des macro génériques et les retrouver quand j'en ai besoin...

    P.S, je ne veux pas dire d'annerie mais il me semble que ce classeur doit s'ouvrir "caché" dés qu'excel est ouvert....à confirmer

  5. #5
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut
    est-ce plus pratique/facile/mieux de faire un fichier où les macros seront centralisées et d'aller chercher ensuite les données dans le fichier (qui porte un nom variable selon l'étude) ?
    en generale on met les macros dans le fichier source ou cible. Mais pourquoi pas dans un 3eme. Excel gere très bien.
    C'est suivant les cas. A toi de voir ....

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

Discussions similaires

  1. Copier coller vers autre feuille
    Par j0joo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/11/2014, 09h26
  2. [Toutes versions] Macro trier copier coller dans autres feuilles
    Par Mike266 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2014, 00h44
  3. [VBA-E]Faire un Copier coller d'une ListBox à une autre
    Par anubisigfrid dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 14h40
  4. Réponses: 3
    Dernier message: 23/09/2006, 15h19
  5. Copier/coller une table sur une autre fichier mdb
    Par berceker united dans le forum Access
    Réponses: 2
    Dernier message: 12/07/2006, 20h08

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