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 à partir d'une expression trouvée


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
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Par défaut Copier à partir d'une expression trouvée
    Bonjour,

    Je cherche s'il vous plait comment faire pour copier tout une colonne d'un fichier à partir d'un mot trouvé...

    Je m'explique j'ai un titre de colonne qui est "BONJOUR" et deux cases en dessous les données qui m'intéressent...

    Je voudrais donc dire à ma Macro, dès que tu trouves le mot "Bonjour" dans un des fichiers concernés, tu sautes deux cases et tu me recopie tout ce qu'il y a...

    Actuellement j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichier).Sheets("FCR - Main").Range("F14:G54").Copy
    mais j'aimerais au lieu de "F14" dire "A partir de deux cases en dessous le mot Bonjour"

    J'ai pas mal cherché sur le net mais en vain...j'ai cru trouver une approche avec Cells.find mais je n'ai pas réussi à l'utiliser


    Voilà merci d'avance
    Cordialement.

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    essaies ce code et adaptes le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Ch As Range
    Set Ch = Rows(1).Find("Bonjour")
    Sheets("Feuil1").Range(Ch(3, 1).Address, "G54").Copy Range("A1") 'à mettre à jour pour tes besoins
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Invité
    Invité(e)
    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
    14
    15
    16
    Option Explicit
     
    Sub RechercheMotif()
     
        Dim C As Range
     
        With Workbooks(fichier).Worksheets("FCR - Main")
     
            Set C = .Cells.Find("BONJOUR", , , xlWhole)
            If C Is Nothing Then Exit Sub
     
            .Range(.Cells(C.Offset(2, 0).Row, C.Column), .[G54]).Copy
     
        End With
     
    End Sub
    Dernière modification par Invité ; 15/07/2013 à 11h17. Motif: Modification du code

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Par défaut
    Merci à tous les deux pour vos réponses...

    Mais je ne suis vraiment pas expert la-dedans et donc j'ai essayé de placer votre code à l'intèrieur du mien mais je n'ai pas réussi

    Voilà ce que j'ai actuellement et qui fonctionne :

    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 Month()
    ' /////////////////////////Ouverture du 1er fichier :///////////////////////////////////////////////
    Workbooks.Open "C:\Rep\Function\" & Sheets(1).Range("A2").Text & "\" & Sheets(1).Range("A1").Text & "\sec\Function- 0001X - " & Sheets(1).Range("A1").Text & " " & Sheets(1).Range("A2").Text & ".xls"
    ' Copie des données :
    fichier = ActiveWorkbook.Name
    Workbooks(fichier).Sheets("FCR - Main").Range("F14:G54").Copy
    Workbooks("Test.xls").Activate
    Workbooks("Test.xls").Sheets("MONTH").Range("C7").Select
    Workbooks("Test.xls").Sheets("MONTH").Paste
    ' Fermeture du 1er fichier :
    Workbooks(fichier).Close
     
    ' /////////////////////////Ouverture du 2nd fichier :///////////////////////////////////////////////
    ...
    ...
    ...
    • Donc pour votre code vcottineau je ne sais pas où placer le with ... j'ai essayé à la place de cette ligne Workbooks(fichier).Sheets("FCR - Main").Range("F14:G54").Copy mais ça n'a pas fonctionné


    • et casefayere j'ai tenté le votre également mais je me retrouve avec une erreur "Variable Objet ou variable de bloc with non définie"

  5. #5
    Membre Expert
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Par défaut copier à partir d'une expression
    Bonjour,

    je crois comprendre, à la lecture de la question, que Corsica13 souhaite recopier uniquement le contenu de la colonne intitulé "bonjour".

    de plus:"un des fichiers concernés" semble indiquer une recherche dans plusieurs fichiers

    ce n'est pas ce que font les codes proposés me semble-t-il mais je ne sais pas les adapter.

    Comment remplacer [G54] par ladite colonne jusqu'à la dernière ligne qui n'est pas nécessairement 54 ?

    Cordialement.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il manquait un "." dans mon code. J'ai modifié le code dans mon post d'origine.
    Essaie à nouveau ça devrait être bon. Sinon donne l'erreur que tu obtiens.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 14
    Par défaut
    Je n'ai pas d'erreur lorsque je rentre votre code mais j'ai simplement le fichier "0001X - blabla" qui s'ouvre et les données ne sont plus copiées

    Mais je pense que je ne sais pas bien placer votre code
    J'ai fait ceci :

    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
    Sub Month()
    Dim C As Range
    ' /////////////////////////Ouverture du 1er fichier :///////////////////////////////////////////////
    Workbooks.Open "C:\Rep\Function\" & Sheets(1).Range("A2").Text & "\" & Sheets(1).Range("A1").Text & "\sec\Function- 0001X - " & Sheets(1).Range("A1").Text & " " & Sheets(1).Range("A2").Text & ".xls"
    ' Copie des données :
    fichier = ActiveWorkbook.Name
    With Workbooks(fichier).Worksheets("FCR - Main")
     
            Set C = .Cells.Find("Bonjour", , , xlWhole)
            If C Is Nothing Then Exit Sub
     
            .Range(.Cells(C.Offset(2, 0).Row, C.Column), .[G54]).Copy
      Workbooks("Test.xls").Activate
      Workbooks("Test.xls").Sheets("MONTH").Range("C7").Select
      Workbooks("Test.xls").Sheets("MONTH").Paste
      ' Fermeture du 1er fichier :
      Workbooks(fichier).Close
    End with
    En gros j'ai l'impression que ça ne va pas jusqu'à Workbooks(fichier).close vu que le fichier ne se ferme pas et surtout ça ne copie pas les valeurs, c'est ça le plus inquiétant

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

Discussions similaires

  1. Copier à partir d'une ligne spécifique
    Par Asma.md2002 dans le forum Général Java
    Réponses: 4
    Dernier message: 14/06/2014, 16h40
  2. Remplacer un champs à partir d'une expression régulière
    Par Nullos Oracle dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/07/2008, 14h33
  3. Génération d'un String à partir d'une expression régulière
    Par yang dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 06/03/2007, 14h21
  4. Réponses: 4
    Dernier message: 01/12/2005, 01h01
  5. Copier à partir d'une requète
    Par Sendo dans le forum Access
    Réponses: 3
    Dernier message: 28/09/2005, 20h13

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