EXCEL copier et coller par 2 macros

Fermé
demarez69 Messages postés 32 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 4 juin 2020 - 25 janv. 2013 à 09:09
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 25 janv. 2013 à 18:14
Bonjour,

Je ne suis un "pro" d'EXCEL. Mais j'ai besoin de copier certaines cases dans un dossier (médical) et de les coller sur la première ligne libre d'un autre dossier (statistique).
Je voudrais automatiser le système afin que mes collègues, même totalement novices, puissent faire la manip.
Dans l'idéal, il y aurait un bouton sur chaque feuille, le premier bouton (dossier médical) entraînerait l'enregistrement des cases concernées, le deuxième bouton (dossier stat) entraînerait le collage de ces cases sur la première ligne libre de la page. J'ai essayer d'enregistre le cheminement mais ça ne fonctionne pas, je pense qu'il faut maîtriser ce langage des programmateurs qui m'est inconnu... pouvez-vous m'aider ?
Merci.

Eric
A voir également:

7 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
25 janv. 2013 à 11:22
Désolé pour le retard .. certaines obligations...

Voici une façon de faire:

Public Sub CopierColler()
    Dim CopierFichier As String, CollerFichier As String
    Dim CopierFeuille As String, CollerFeuille As String
    Dim CopierLigne As Long, CollerLigne As Long
    Dim CopierColonne As Long, CollerColonne As Long
    '
    CopierFichier = "FicherOriginal.xls"
    CollerFichier = "FicherCopie.xls"
    CopierLigne = 1: CopierColonne = 3
    CollerColonne = 3
    If (Cells(1, 3).Value <> "") Then
        CollerLigne = Columns(3).Find("*", , , , xlByColumns, xlPrevious).Row
    Else
        CollerLigne = 1
    End If
    CopierFeuille = "Feuil1": CollerFeuille = "Feuil1"
    '
    Dim Contenu As Long
    Contenu = Workbooks(CopierFichier).Sheets(CopierFeuille).Cells(CopierLigne, CopierColonne).Value
    Workbooks(CollerFichier).Sheets(CollerFeuille).Cells(CollerLigne, CollerColonne).Value = Contenu
End Sub


Il faut que les deux classeurs soit ouvert .. sinon, il faut utiliser un autre moyen.

Cordialement.
1
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
25 janv. 2013 à 13:29
Je vais tenter de répondre le mieux possible à vos questions .. n'hésitez pas si vous ne saisissez pas tout..

Comment faire pour créer cette macro ? Pour l'instant je crée une macro bidon et je remplace le texte par celui qu'on me propose, il y a sans doute plus logique !

Une procédure (tant qu'à faire, parlons correctement), public ou privée, porte un nom, ex: Public Sub CopierColler() ..
Cette phrase annonce le début d'une procédure de type "publique" (donc, on peut l'appeler dans Excel avec Menu, Outils, Macro, Macro, NomDeLaProcédure ou via un bouton de commande.

Pour en revenir à la procédure que j'ai écrite plus haut, c'est toute la procédure à coller dans un module .. mais il y a un peu de travail pour vous !

Il faut donner des noms ou des nombres aux différentes variables:

    CopierFichier = "FicherOriginal.xls"
    CollerFichier = "FicherCopie.xls"
    CopierFeuille = "Feuil1": CollerFeuille = "Feuil1"

- remplacer FicherOriginal.xls par le vrai nom de fichier d'origine,
- remplacer FicherCopie.xls par le vrai nom de fichier dans lequel vous aller coller la valeur de la cellule,
- remplacer, si nécessaire, CopierFeuille par le vrai nom de la feuille (onglet) du classeur original,
- remplacer, si nécessaire, CollerFeuille par le vrai nom de la feuille (onglet) du classeur dans lequel vous aller coller la valeur de la cellule,

Passons à la numérotation des cellules:
    CopierLigne = 1: CopierColonne = 3 
    CollerColonne = 3
    If (Cells(1, 3).Value <> "") Then
        CollerLigne = Columns(3).Find("*", , , , xlByColumns, xlPrevious).Row
    Else
        CollerLigne = 1
    End If


J'ai remplacé la valeur d'une cellule par un nom à deux composantes .. la radical donne le classeur (Copier = la classeur à partir duquel on récolte la donnée; Coller = le classeur où l'on colle la donnée) et le suffixe .. qui est soit Ligne, soit Colonne.
Pour les numéros de ligne .. pas d'explication
Par contre, pour les numéro de colonne :
1 = A ; 2 = B ; 3 = C ... 26 = Z; 27 = AA .. etc.
1
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
25 janv. 2013 à 09:20
Bonjour Eric,

Quand vous parlez de "dossier" .. ce sont deux fichiers qui se trouve dans le même répertoire du collègue "X" ?
0
demarez69 Messages postés 32 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 4 juin 2020 5
25 janv. 2013 à 09:36
Bonjour,

Je suis bluffé par votre réactivité ! Bravo et merci beaucoup de m'aider...

Alors, je vais essayer d'être plus précis : ce sont 2 feuilles de calcul qui ne sont pas dans le même dossier (je ne sais pas vraiment ce qu'est un "fichier").

Par ailleurs, je précise que les cellules à copier sont des formules et que je ne dois coller que les valeurs.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
demarez69 Messages postés 32 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 4 juin 2020 5
Modifié par demarez69 le 25/01/2013 à 12:16
Aîe, je savais bien que ça allait se compliquer ! Mais bon, depuis le temps que je dois me mettre aux macros, autant profiter de l'occasion. J'espère que je ne vais pas vous décourager pour autant.
Donc ce texte que vous m'envoyer, je présume que c'est la liste de commandes qu'il me faut greffer dans une macro. D'où mes questions complémentaires :

- Comment faire pour créer cette macro ? Pour l'instant je crée une macro bidon et je remplace le texte par celui qu'on me propose, il y a sans doute plus logique !

- Je présume qu'il me faut préciser l'adresse des cellules à copier et de la feuille de destination. Comment dois-je m'y prendre ?

- Cette commande unique est-elle sensée suffire ? je ne suis pas sûr que l'on puisse relier la feuille d'origine et celle de destination sans passer par le "vide-poche" (progiciel d'origine un tantinet "hermétique !)

- Comment créer un bouton associé ? ou 2...

Rq : J'ai changé la disposition des cases pour avoir toutes les valeurs intéressantes sur la même ligne. Donc plus de problème de collage avec ou sans liaison. Il me suffit donc de copier cette suite de cases dans un premier temps pour la coller sur la première ligne vide de la feuille de destination dans un 2ème temps.
0
demarez69 Messages postés 32 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 4 juin 2020 5
25 janv. 2013 à 14:42
Merci d'avoir pris le temps de me donner ces détails. Je vais essayer de digérer tout ça. Nul doute que ça va me prendre un certain temps...
Je vous tiens au courant.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
25 janv. 2013 à 18:14
Bonsoir Eric,

En relisant mon code, je me suis aperçu qu'il y a une erreur .. il faut ajouter "+ 1" à la ligne de recherche de la dernière ligne non-vide .. sinon, on écrit toujours sur la même ligne .. mille excuses.

J'en ai profité pour ajouter des commentaires .. autant que j'ai pu.

Voici le lien du fichier : http://cjoint.com/data3/3AzsnTeOKgr.htm

Bon week-end,
Heliotte.
0