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 :

Problème lors de la copie du contenu d'une cellule vers une autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut Problème lors de la copie du contenu d'une cellule vers une autre
    Bonjour,

    A partir de 2 classeurs (Calendrier et Contact contenant les feuilles WsCalendrier et WsContact) je veux créer un nouveau classeur Fusion contenant la feuille WsFusion.

    Dans chacun de mes 2 fichiers sources j'ai une même colonne identifiant mes enregistrements qui va me servir de clé de fusion.

    Je commence par copier les colonnes du calendrier qui m'intéressent dans le classeur de fusion. Je parcours ensuite la colonne d'identifiant et pour chaque valeur trouvée, je vais copier les infos correspondantes du même enregistrement depuis le classeur contact.

    Voici ce que ça donne (librement inspiré d'une réponse apportée sur le forum) :
    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
    ' Copie dans la feuille de fusion des données souhaitées de la feuille calendrier de l'étude
    WsCalendrier.Columns("B:B").Copy WsFusion.Columns("A:A")
    WsCalendrier.Columns("D:E").Copy WsFusion.Columns("F:G")
    WsCalendrier.Columns("H:J").Copy WsFusion.Columns("H:J")
     
    ' Pour les personnes concernées par les prochains appels téléphonique, on recopie dans la nouvelle feuille
    ' les infos de la feuille contact
     
    ' Détermination de la dernière ligne du fichier de contact
    DerLigContact = WsContact.Range("D" & WsContact.Rows.Count).End(xlUp).Row
    ' Détermination de la dernière ligne du fichier de calendrier
    DerLigCal = WsCalendrier.Range("B" & WsCalendrier.Rows.Count).End(xlUp).Row
     
    ' Plage des identifiants dans la feuille de fusion --> A
    ' (il s'agit des mêmes que dans le fichier calendrier)
    Set NumPat_Dest = WsFusion.Range("A2:A" & DerLigCal)
    ' Plage des identifiants dans la feuille contact --> D
    Set NumPat_Contact = WsContact.Range("D2:D" & DerLigContact)
     
    ' Copie dans le fichier de fusion des informations du fichier de contact
    ' dont l'identifiant est identique à celui du fichier calendrier
    For Each Cel_Dest In NumPat_Dest
        Set Cel_Src = NumPat_Contact.Find(Cel_Dest)
        'Si l'ID correspondant est trouvé, on complète la ligne de référence
        If Not Cel_Src Is Nothing Then
            WsContact.Range(Cel_Src.Offset(0, -3), Cel_Src.Offset(0, -1)).Copy WsFusion.Range(Cel_Dest.Offset(0, 1), Cel_Dest.Offset(0, 3))
            WsContact.Range(Cel_Src.Offset(0, 1)).Copy WsFusion.Range(Cel_Dest.Offset(0, 4))
        Else
            ' Autres instructions
        End If
    Next Cel_Dest
    Je crois que je comprends mal l'utilisation de Cel_Dest ou Cel_Src. La copie de plusieurs cellules adjaceintes (ligne 26) ne pose aucun problème. Par contre je n'arrive pas à trouver comment copier une seule cellule (ligne 27). J'ai l'impression que je ne maitrise pas suffisamment l'objet Cel_Dest ou Cel_Src. Je vois ça un peu comme une référence de cellule (notamment avec le Range(Cel_Src.Offset(0, -3), Cel_Src.Offset(0, -1)).Copy. Or avec le debuggeur, il apparait qu'on fait plus référence au contenu de la cellule.

    Pouvez-vous m'éclairer sur mon erreur et comment réussir à copier la cellule située juste à droite de ma cellule de référence ?

    Merci d'avance pour votre aide !

    Bonne journée
    Laurent

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Essaies comme ceci

    (J'ai renommé les variables pour mon habitude. l'important est la méthode)

    Regarde bien comment on copie vers la destination (vers première cellule)

    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
    WsCalendrier.Columns("B:B").Copy WsFusion.Range("A1")
    WsCalendrier.Columns("D:E").Copy WsFusion.Columns("F1")
    WsCalendrier.Columns("H:J").Copy WsFusion.Columns("H1")
     
    DerLigContact = WsContact.Range("D" & WsContact.Rows.Count).End(xlUp).Row
    DerLigCal = WsCalendrier.Range("B" & WsCalendrier.Rows.Count).End(xlUp).Row
     
    Set NumPat_Dest = WsFusion.Range("A2:A" & DerLigCal)
    Set NumPat_Contact = WsContact.Range("D2:D" & DerLigContact)
     
    For Each c In NumPat_Dest
        Set v = NumPat_Contact.Find(c, LookIn:=xlValues, lookat:=xlWhole)
        If Not v Is Nothing Then
            v.Offset(0, -3).Resize(, 2).Copy c.Offset(0, 1)
            v.Offset(0, 1).Copy c.Offset(0, 4)
        Else
            ' Autres instructions
        End If
    Next c
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre habitué
    Homme Profil pro
    Data Manager
    Inscrit en
    Octobre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Data Manager
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 151
    Points : 167
    Points
    167
    Par défaut
    Merci pour ton retour.

    Après la lecture de ta proposition, j'ai retiré la référence à la feuille et ça marche. Super ! Merci beaucoup !!!

    J'avais testé plusieurs choses avant de poser ma question mais je n'avais pas pensé à la feuille. J'avais mis cette référence à la feuille pour être sûr d'être sur la bonne feuille du bon classeur (comme pour la 1ère instruction du If). Mais il semblerait que du coup il comprenne le .Copy comme une méthode de la feuille et m'envoie balader.

    Problème réglé !

    Merci et bon week-end à venir !

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

Discussions similaires

  1. WinNT4 : problème lors de la copie de fichiers volumineux
    Par perceval_attitude dans le forum Windows 2000/Me/98/95
    Réponses: 4
    Dernier message: 02/09/2014, 22h04
  2. Probléme lors de l'additon du contenu d'un label ou textbox
    Par nasr_live dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 13/02/2011, 00h05
  3. Problème lors de la copie de chaine caractère.
    Par Erast dans le forum Débuter
    Réponses: 2
    Dernier message: 16/04/2010, 11h30
  4. Problème Lors d'un copie de base
    Par 79Charles dans le forum Administration
    Réponses: 17
    Dernier message: 19/08/2004, 15h13
  5. Copie du contenu d'un répertoire vers un autre
    Par IG88 dans le forum Windows
    Réponses: 4
    Dernier message: 30/07/2004, 14h33

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