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 :

programmer un code en VBA dans une macro


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
    Septembre 2010
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut programmer un code en VBA dans une macro
    Bonjour,

    Je voudrai faire la copie d'un groupe de valeur d'une colonne précise mais que ça soit à partir d'une cellule qui contient un mot précis, puis la coller dans un autre endroit ça dépendra aussi de l'emplacement d'une cellule qui contient un mot précis.

    Donc si j'ai par exemple le tableau suivant dans un fichier excel:
    Nom Prénom Ville Date de naissance
    Dubosque Franck Paris 12/02/1976
    L'hermite Thierry Bordeaux 23/06/1965
    Ardisson Renaud Bordeaux 31/04/1970

    Et dans un autre fichier excel j'ai le tableau suivant:
    Nom Prénom Ville Date de naissance
    Dubosque Franck Paris 12/02/1976
    L'hermite Thierry Bordeaux
    Ardisson Renaud Bordeaux

    Je veux copier du premier fichier excel la colonne des dates de naissance à partir de la ligne qui contient comme ville bordeaux donc directement après paris c'est à dire les dates "23/06/1965" et "31/04/1970". Et les coller dans le deuxième fichier dans les cellules qui ne contiennent rien.

    Une remarque c'est que je copie toujours à partir de la ligne directement après la ligne qui contient paris et je colle aussi toujours après la ligne qui contient "paris".

    Donc si vous avez des idées, merçi de les faire partager et merçi d'avance.

    Cdt,
    Skip

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Si tes enregistrements sont triés de la même façon dans les deux classeurs, un simple collage de la colonne D suffit :
    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
     
    Sub Copier()
     
        Dim Cls1 As Workbook
        Dim Cls2 As Workbook
     
        'le classeur contenant cette macro et
        'les valeurs à jour
        Set Cls1 = ThisWorkbook
     
        'le classeur à mettre à jour
        Set Cls2 = Workbooks("Classeur2.xls")
     
        'copie la colonne D et la colle dans le
        'classeur à mettre à jour et en colonne D
        Cls1.Worksheets("Feuil1").Columns("D:D").Copy Cls2.Worksheets("Feuil1").Range("D1")
    End Sub
    Hervé.

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut
    Bonjour, j'ai utilisé ce code et j'ai une erreur au niveau de la ligne qui est en rouge:

    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
    ChDir "C:\SKIP"
        Workbooks.Open Filename:="C:\SKIP\Classeur1.xls"
        Dim Cls1 As Workbook
        Dim Cls2 As Workbook
        Dim d As Range, dernière_cellule As Range
        Dim e As Range, dernière_cellule1 As Range
        Set Cls1 = Workbooks("Classeur1.xls")
        Set Cls2 = Workbooks("les données du " & Format(Date, "ddmmyyyy") & ".xlsx")
        For Each d In Sheets("Feuil1").Range("A1", Range("A" & Rows.Count).End(xlUp))
        If d.Value Like "Par*" Then Set dernière_cellule = d
        Next
        Windows("les données du " & Format(Date, "ddmmyyyy") & ".xlsx").Activate
        For Each e In Sheets("Données").Range("B1", Range("B" & Rows.Count).End(xlUp))
        If e.Value Like "Par*" Then Set dernière_cellule1 = e
        Next
        With dernière_cellule & dernière_cellule1
        Cls1.Worksheets("Feuil1").Range(.Offset(1, 0), .End(xlDown)).Offset(0, 5).Copy Cls2.Worksheets("Données").Range(.Offset(1, 0), .End(xlDown)).Offset(0, 5)
        End With
        Windows("Classeur1.xls").Activate
        ActiveWindow.Close
        Windows("les données du " & Format(Date, "ddmmyyyy") & ".xlsx").Activate
    Et si il y'a une autre erreur merçi de me prévenir. Voilà si vous avez une idée de la solution merçi de la partager et à toute.

    Cordialement,
    SKIP

  4. #4
    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
    Bonsoir,
    sans avoir regardé ou analysé ton code, cette partie est truffée d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With dernière_cellule & dernière_cellule1
        Cls1.Worksheets("Feuil1").Range(.Offset(1, 0), .End(xlDown)).Offset(0, 5).Copy Cls2.Worksheets("Données").Range(.Offset(1, 0), .End(xlDown)).Offset(0, 5)
        End With
    déjà pourquoi le with, pourquoi les offset et les parentheses mal placées.

    quand j'aurai compris ton but, peut-etre que je serai dispo
    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...)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 128
    Par défaut
    En fait je veux faire la copie d'une colonne tout de suite après la cellule qui commence par le mot "Par" et la coller aussi dans l'emplacement qui suit le meme concept.

    le "offset" c'est pour le décalage des colonnes (5 dans mon exemple) et de la ligne (1 dans mon exemple) par rapport à laquel se trouve la cellule qui contient le mot qui commence par "Par".

    Pour "with"" c'est parce je commence la copie directement après la dernière cellule qui contient le mot qui commence par "Par" jusqu'a la dernière cellule du tableau et je la colle suivant le meme concept.

    Voilà.
    Merçi d'avance

    Cdt,
    SKIP

  6. #6
    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 à tou(te)s, skipeemed

    Pour "with"" c'est parce je commence la copie directement après la dernière cellule qui contient le mot qui commence par "Par" jusqu'a la dernière cellule du tableau et je la colle suivant le meme concept.
    je n'ai toujours pas le tempsde regarder mais ta citation est fausse, with n'est pas fait pour ça.

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sheets("feuil1").range("a1") =....
    sheets("feuil1").range("a2")=....
    sheets("feuil1").range("a3")=....[/
    bon courage
    peut s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with sheets("feuil1")
       .range("a1") = ...
       .range("a2") = ...
       .range("a3") = ...
     
    end with
    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...)

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par skipeemed Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        With dernière_cellule & dernière_cellule1
    With est fait pour éviter la répétition d'un objet (range, feuille, classeur, contrôle...).
    Ca n'a donc aucun sens de concaténer (&) 2 objets.
    La concaténation ne se fait que sur des Strings.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. [XL-2010] Traduire fonction excel en VBA dans une macro
    Par Foifoi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/09/2014, 15h31
  2. [XL-2007] problème dans du code en VBA dans une macro
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/12/2010, 18h05
  3. Inserer du code vba dans une macro
    Par gadget27 dans le forum Général VBA
    Réponses: 4
    Dernier message: 03/05/2007, 13h35

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