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 copie d'une plage de cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Points : 13
    Points
    13
    Par défaut Problème de copie d'une plage de cellule
    Bonjour!

    J'ai un problème avec des macros apparemment toute simples:

    Ma permière macro, par l'intermédiaire d'un bouton, copie une plage de 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
    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
    Sub Copier()
     
    On Error Resume Next
     
    Dim a As Long
    Dim b As Long
    Dim c As String
    Dim d As Long
    Dim e As Long
     
    c = InputBox("Quel est le numéro de la colonne à copier? Exemple: colonne A = 1, etc...", "Copie des données", "4")
     
    b = c
    Select Case b
    Case 1 To 100
        a = 2
     
        d = Cells(65536, b).End(xlUp).Row
     
    e = 2
    Do While e <> d
        Select Case Cells(e, b).Value
        Case ""
            Cells(e, b).Select
            Selection.Delete
            d = Cells(65536, b).End(xlUp).Row
            e = e - 1
     
        Case Else
        e = e + 1
     
        End Select
    Loop
     
        Do While ActiveSheet.Cells(a, b).Value <> ""
        a = a + 1
        Loop
     
        ActiveSheet.Range(Cells(2, b), Cells(a - 1, b)).Select
        Selection.Copy
     
    Case Else
        Exit Sub
     
    End Select
     
    CommandBars("CNE").Controls("Coller").Enabled = True
     
    End Sub

    Ensuite je veux faire une deuxieme macro pour que cette plage copiée soit collée à un endroit précis quand j'appuie sur le bouton qui est rendu "cliquable" à la fin de la première macro.

    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
    Sub Coller()
     
    On Error Resume Next
     
    Dim a As Long
    Dim b As Long
     
    a = Cells(65536, 2).End(xlUp).Row
     
    Range(Cells(33, 2), Cells(a, 2)).Select
    Selection.ClearContents
     
    Range(Cells(33, 2)).Select
    ActiveSheet.Paste
     
    CommandBars("CNE").Controls("Coller").Enabled = False
     
    End Sub
    Mais quand j'execute la deuxieme macro, j'ai une erreur: "La méthode Range de l'objet global a échoué " sur la ligne "Range(Cells(33, 2)).Select"

    Pourriez vous m'aider à régler ce problème?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 258
    Points : 306
    Points
    306
    Par défaut
    range de cells ne veux rien dire!

    supprime le range et ses parentheses, ca devrait suffire!

    Ou alors tu ne laisse que le Range


  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Points : 13
    Points
    13
    Par défaut
    Effectivement, le range ne sert à rien!
    Mais maintenant j'ai une autre erreur "La méthode Paste de la classe Worksheet a échouée"???

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 258
    Points : 306
    Points
    306
    Par défaut
    Et oui car pour coller, il faut avoir copié avant!

    Donc tu utilises cette fonction à cheval sur 2 macros!

    C'est tres inconfortable, meme pour un ordi dépourvu d'apendice fessier!

    Réfléchi à trouver une autre solution car si les 2 macros ne sont pas activées simultanément, il y aura un scmilblick dans le bidule qui ne fonctionnera pas.

    Peut etre en collant ce que tu aura récupéré dans une feuille tampon.

    Alors la deuxièùe macro ira rechercher cette données sur la feuille tampon pour la coller à l'endroit voulu!

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Indépendamment de ce que dit COCONUT (qui a raison), j'ai tester ta Macro1, elle fonctionne bien qu'un peu "compliquée"
    et pour la 2ém il suffit simplement de copier...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub coller()
     
           Range("C2").Select
           ActiveSheet.Paste
     
    End Sub
    Bien sur adapter C2.
    A+

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Une petite idée pour n'employer qu'une seule macro...

    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
    Sub copier()
    'Quand on teste une macro, on ne met pas cette ligne, uniquement après
    'que tout fonctionne bien
    'On Error Resume Next
     
    Dim a As Long
    Dim b As Long
    Dim c As String
    Dim d As Long
    Dim e As Long
    'L'utilisateur ne saurra pas forcément le N° de la colonne
    c = InputBox("Quel est le numéro de la colonne à copier? Exemple: colonne A,B,C etc.. ", "Copie des données", "A")
     
    'Si colonne > Z il faut faire détections multiple
    b = asc(Ucase(c))-64
    Select Case b
    Case 1 To 100
        d = Cells(65536, b).End(xlUp).Row
        e = 2
        Do While e <> d
            Select Case Cells(e, b).Value
            Case ""
                Cells(e, b).Select
                Selection.Delete
                d = Cells(65536, b).End(xlUp).Row
                e = e - 1
            Case Else
                e = e + 1
            End Select
        Loop
        a = 2
        Do While ActiveSheet.Cells(a, b).Value <> ""
            a = a + 1
        Loop
     
        ActiveSheet.Range(Cells(2, b), Cells(a - 1, b)).Select
        Selection.Copy
        If MsgBox("Voulez-vous copier sur la colonne <C>", vbYesNo, "Copie colonne" & b) = vbYes Then
            Range("C2").Select
            ActiveSheet.Paste
        End If
    Case Else
        Exit Sub
    End Select
    End Sub
    A+

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Points : 13
    Points
    13
    Par défaut
    Merci à tous pour vos conseils, le problème est maintenant résolu

    Merci encore!

  8. #8
    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 : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par Boonichou
    le problème est maintenant résolu
    Un petit clic sur le joli bouton du même nom, en bas de discussion, alors?

    Merci.

Discussions similaires

  1. Problème de copie d'une plage de cellules avec case à cocher
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/05/2013, 14h32
  2. Réponses: 4
    Dernier message: 20/04/2012, 20h49
  3. copie d'une plage de cellules : subscript out of range
    Par une_tite_question dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 25/08/2010, 18h46
  4. faire une copie d'une plage de cellules sur x feuilles
    Par La Zélie dans le forum Excel
    Réponses: 4
    Dernier message: 11/06/2008, 08h55
  5. Copie d'une plage de cellules
    Par Jeanvaljean44 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/01/2008, 17h46

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