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 :

Macro copier-coller d'un fichier vers un autre [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut Macro copier-coller d'un fichier vers un autre
    Bonjour à tous !

    Je voudrais une macro qui me permet de copier des éléments d'un classeur nommée "participation majeur.xls" vers le classeur "base.xls".

    Pour déterminer l'endroit où copier les éléments sur le fichier "base.xls" il me faudrait un msgbox qui me demande "Quel dossier numéro de dossier voulez-vous traiter?". Je voudrais qu'une recherche du numéro saisie se fasse dans la colonne A.

    Une fois positionné sur la ligne du dossier de mon fichier "base.xls".

    Je voudrais qu'il copie des cellules de la méthode suivante :

    Cellule B30 (participation majeurs.xls) à copier dans cellule AK (de la ligne présélectionné du fichier base.xls).
    Cellule B37 (participation majeurs.xls) à copier dans cellule AM (de la ligne présélectionné du fichier base.xls).
    Cellule B36 (participation majeurs.xls) à copier dan s cellule AN (de la ligne présélectionné du fichier base.xls).
    Cellule B8 (participation majeurs.xls) à copier dans cellule CO (de la ligne présélectionné du fichier base.xls).

    Je ne sais pas si c'est possible.

    Merci de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Et ben .... oui, ça parait possible. Le mieux pour démarrer et de faire l'essai en enregistrement macro et de regarder le code généré: il n'est pas beau mais c'est une bonne manière de commencer
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par vinc_bilb Voir le message
    Bonjour,

    Et ben .... oui, ça parait possible. Le mieux pour démarrer et de faire l'essai en enregistrement macro et de regarder le code généré: il n'est pas beau mais c'est une bonne manière de commencer
    Merci pour ta réponse j'ai essayé mais comme je bloque dès le début au niveau de msgbox et de la variable qui va me permettre de rechercher la ligne que je souhaite ben... Je suis bloqué

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2018
    Messages : 21
    Points : 27
    Points
    27
    Par défaut
    bonjour, voici un petit code :

    il y a surement plus optimisable mais il 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Option Explicit
    Option Base 1
     
    Sub PasteData()
     
    'Variables
        'Compteur
        Dim i As Double
     
        'Adresse
        Dim RowBase As String
        Dim LastRowBase As Double  'Dernière Ligne utilisé du classeur "Base"
        Dim SheetNameBase As String  'Nom de la feuille de travail sur le classeur "Base"
        Dim SheetNamePart As String 'Nom d ela feuille de travail sur le classeur "Participation Majeurs"
        Dim WkbNameBase As String 'Nom du Classeur "Base"
        Dim WkbNamePart As String 'Nom du Classeur "Participation Majeur"
        Dim AddressPaste As String
        'Tableau
        Dim ArrayDataBase As Variant 'Tableau répertoriant les Données du classeur "Base" (Colonne A)
        Dim PasteData(4, 1) As Variant
        'Divers
        Dim FolderFound As Boolean
     
     
    'Saisie du Dossier par l'utilisateur
     
        On Error Resume Next
        RowBase = InputBox("Quel dossier numéro de dossier voulez-vous traiter?", "Saisie du dossier")
        If RowBase = 0 Then Exit Sub
        On Error GoTo 0
     
    'Variables à modifier en fonction de tes nom de classeur/Feuille
     
        SheetNameBase = "Base"
        SheetNamePart = "Part"
        WkbNameBase = "base.xlsb"
        WkbNamePart = "participation majeurs.xlsb"
     
    'Chargement des Données de la feuille "Base"
        LastRowBase = Workbooks(WkbNameBase).Sheets(SheetNameBase).Cells(1, 1).SpecialCells(xlLastCell).Row
        ArrayDataBase = Workbooks(WkbNameBase).Sheets(SheetNameBase).Range(Workbooks(WkbNameBase).Sheets(SheetNameBase).Cells(1, 1), _
        Workbooks(WkbNameBase).Sheets(SheetNameBase).Cells(LastRowBase, 1))
     
    'Cherche le la ligne correspondant au numéro de dossier saisie
     
        FolderFound = False
        For i = 1 To LastRowBase
            If CStr(ArrayDataBase(i, 1)) = CStr(RowBase) Then
                RowBase = i
                FolderFound = True
                Exit For
            End If
        Next i
     
        'Vérifie que le dossier a bien été trouvé
        If FolderFound = False Then
            MsgBox "Erreur : le dossier saisie n'a pas été trouvé.", Title:="Opération annulé"
            Exit Sub
        End If
     
    'Copie les données
     
        PasteData(1, 1) = Workbooks(WkbNamePart).Sheets(SheetNamePart).Range("B30")
        PasteData(2, 1) = Workbooks(WkbNamePart).Sheets(SheetNamePart).Range("B37")
        PasteData(3, 1) = Workbooks(WkbNamePart).Sheets(SheetNamePart).Range("B36")
        PasteData(4, 1) = Workbooks(WkbNamePart).Sheets(SheetNamePart).Range("B8")
     
    'Collage des données
     
        Workbooks(WkbNameBase).Sheets(SheetNameBase).Range("AK" & RowBase) = PasteData(1, 1)
        Workbooks(WkbNameBase).Sheets(SheetNameBase).Range("AM" & RowBase) = PasteData(2, 1)
        Workbooks(WkbNameBase).Sheets(SheetNameBase).Range("AN" & RowBase) = PasteData(3, 1)
        Workbooks(WkbNameBase).Sheets(SheetNameBase).Range("CO" & RowBase) = PasteData(4, 1)
     
     
    End Sub
    Pour la saisie de ton numéro de dossier ce n'est pas un msgbox mais un inputbox qu'il faut. Le msgbox sert uniquement à afficher des informations.

    J'ai mis les noms des feuilles et classeurs en variables au cas ou elles changent. tu auras juste à modifier leur nom ligne : 34,35,36,37

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Novembre 2013
    Messages : 48
    Points : 21
    Points
    21
    Par défaut
    Merci beaucoup elle fonctionne et j'ai essayé de la décortiquer pour savoir comme ça fonctionne et je l'ai légèrement réadapter en gardant le même squelette.

    C'est super merci beaucoup de ton aide !

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

Discussions similaires

  1. [LibreOffice][Texte] Macro copier coller dans 2 fichiers différents
    Par fransix dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 08/08/2017, 23h52
  2. Macro copier coller colonnes de tableaux vers 1 tableau compilé
    Par Sousour1987 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/10/2015, 15h53
  3. Macro copier/coller sur 2 fichiers aux noms variables
    Par ThSPB dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/04/2011, 21h25
  4. copier une partie de fichier vers un autre
    Par Dx_ter dans le forum Solaris
    Réponses: 6
    Dernier message: 11/11/2009, 10h03
  5. Copier coller d'un fichier vers un autre
    Par loloz27 dans le forum Excel
    Réponses: 2
    Dernier message: 02/02/2009, 17h40

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