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 de copier coller VBA Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 13
    Par défaut Problème de copier coller VBA Excel
    Bonjour à tous,

    Je débute sur VBA et je n'ai pas trouvé de problème identique sur ce forum (A priori)
    J'ai pour but de coder la fonction "unique".

    Je cherche à faire une fonction "Recopie" de façon universelle qui recopie une plage dans une autre, en débutant dans la recopie dans la plage sous la cellule appellante. J'ai un problème avec la fonction Copy de VBA.
    J'ai essayé 3 façons :
    1) recopie à la mano avec un for each : marche, mais c'est moche et "pas efficace"
    2) recopie la plage (variable) grâce à la fonction copy : ne marche pas
    3) recopie la plage (entrée manuellement) grâce à la fonction copy : ne marche tjs pas

    Ce qui me bute, c'est que dans une procédure "Sub" les 3 techniques marchent... Je reste quoi. Des explications? Soyez Constructif svp ! :-)
    Si jamais vous voyez le problème, pourriez-vous m'indiquer comment corriger mon code (version 2). ) svp ?
    Voici le code :

    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
    ' Recopie une plage (titre dans la case d'appel puis les valeur) à partir de la case qui appelle la fonction
    Function Recopie3(plage As Range) As String
     
    ' Variables
    Dim cellule As Range
    Dim ligneCaller As Integer
    Dim colonneCaller As Integer
    Dim i As Integer: i = 1
     
    ' Corps de la fonction
    Set cellule = Application.Caller
    ligneCaller = cellule.Row
    colonneCaller = cellule.Column
     
    ' Version Disgrâcieuse qui marche
    For Each cellule In plage
        'MsgBox (" i = " & i & " valeur du résultat " & cellule.Value)
        Cells(ligneCaller + i, colonneCaller).Value = cellule.Value
        i = i + 1
    Next cellule
     
    ' Détail
    Recopie3 = "Titre"
     
    ' Problème et qui n'effectue pas le taff 
    plage.Copy Range("H15")
    MsgBox ("Clean")
     
    ' Code qui ne marche pas non plus... 
    Range("A8:B11").Copy Range("I15")
     
    End Function

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je débute sur VBA et je n'ai pas trouvé de problème identique sur ce forum (A priori)
    Vous n'avez sans doute pas bien cherché car c'est une question récurrente sur ce forum.

    Pour vous apporter une réponse pertinente, il faudrait savoir exactement ce que vous voulez réaliser comme copie et quelles sont les plages sources et cibles (Plages classiques ou tableaux structurés (ListObject)). Merci de préciser la nature des plages "source" et "cible"
    Le collage doit être en valeur seulement ou bien Format, Formules, etc.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 13
    Par défaut Réponse
    Je vous remerice de votre réponse, et j'avais l'impression que les questions ne couvraient pas tout à fait mon cas, car je travaille dans une fonction et que j'avais cru comprendre qu'une fonction ne pouvait seulement modifier la case appelante de la fonction.

    Je vous avoue ne pas savoir réellement la différence entre "plages classiques" et "tableaux structurés".
    Je travaille en VBA depuis vendredi midi. :-/

    L'usage n'est pour l'instant que des données d'une colonne vers "au pire" une autre feuille (possiblement d'une feuille différente), mais tout en restant dans le même classeur.
    La mise en forme m'est absolument inutile haha, qui est déjà traités par des macros automatiques. Toutefois à terme, pouvoir copier des formules de la plage de cellules, ce serait cool.

    Merci à vous pour votre réactivité !
    Bien à vous,

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 13
    Par défaut
    Je plus inquiétant, c'est que mon code marche dans une procédure, mais pas dans une fonction, alors que l'alternative 1) fonction dans une fonction.

    Je ne comprends pas pourquoi.
    Ce matin j'ai refait des tests archi simple :

    - Recopier affiche la chaîne mais n'affecte pas le tableau
    - Copie & copie2 marchent très bien...

    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
    Function Recopier(plage As Range) As String
     
    Recopier = "test"
    Range("A1:C3").Copy ActiveSheet.Range("F5")
     
    End Function
     
    Sub copie()
     
    Range("A1:C3").Copy ActiveSheet.Range("F5")
     
    End Sub
     
     
    Sub copie2()
    Dim Recopie As Range
     
    Set Recopie = Range("A1:C3")
    Recopie.Copy Range("E5")
    End Sub

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si vous expliquiez clairement ce que vous voulez faire ce serait plus simple
    Que ce sot une procédure "Fonction" ou une "Sub", elle peuvent effectuer le même travail. La première peut être utilisée comme une sub ou comme une fonction on peut alors en récupérer une valeur

    En revanche, il est impossible d'utiliser une fonction personnalisée utilisable comme une fonction classique dans excel si l'on effectue une opération telle qu'une copie
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2020
    Messages : 13
    Par défaut
    Bonjour,

    Merci pour votre réponse. À terme, j'aimerais recoder la fonction "unique" et "filter"
    J'aimerais faire une fonction qui prend en argument une plage (par exemple une colonne) et qui recopie cette plage sous la case qui appelle la fonction (même classeur, même feuille).

    On ne peut pas utiliser copy dans une fonction personnalisée ? Comment cela ce fait-il ?
    Je suis donc obligé de parcourir la colonne et recopier les valeurs à la main pour faire ma fonction personnalisée ?

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

Discussions similaires

  1. Problème de copier / coller d'Excel à Word
    Par yvidal dans le forum Excel
    Réponses: 10
    Dernier message: 15/02/2019, 15h56
  2. Copier coller vba excel 2007
    Par rthz3100 dans le forum Excel
    Réponses: 10
    Dernier message: 29/09/2013, 15h54
  3. Problème de copier coller en vba à partir d'excel
    Par Psycho185 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/06/2011, 13h47
  4. Problème de copier coller macro VBA
    Par Piernod dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 16/11/2009, 18h56
  5. VBA-E: Pb copier-coller entre Excel et .csv
    Par tiger118 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2006, 11h08

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