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 :

Copie dans vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Par défaut Copie dans vba
    bonjour,
    j'ai créé une macro qui copie une selection de ligne, la macro fonctionne mais il y a un maximun ,,, je m'explique :
    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
    Sub G()
    '
    ' G Macro
    ' Macro enregistrée le 2008-03-29 par André
    '
     
    '
        Sheets("bd").Select
        Rows("2:30").Select
        Selection.Insert Shift:=xlDown
        Range("A3").Select
        Sheets("SHOP").Select
        Range("A7:G29,A34:G56,A61:G83,A88:G110,A115:G137,A142:G164,A169:G191,A196:G218,A223:G245,A250:G272,A277:G299,A304:G326,A331:G353,A358:G380,A385:G407,A412:G434,A439:G461,A466:G488,A493:G515,A520:G542,A547:G569,A574:G596").Select
        Selection.Copy
        Sheets("bd").Select
        Range("A2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("A3").Select
        Sheets("SHOP").Select
        Application.CutCopyMode = False
        Range("A7").Select
        Sheets("bd").Select
    End Sub
    je ne peux pas ajouter de ligne plus loin que la g 596 ?????

    y-a une raison?????

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Citation Envoyé par lebeniste Voir le message
    bonjour,
    j'ai créé une macro qui copie une selection de ligne, la macro fonctionne
    C'est extraordinaire : moi, la simple macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Test()
    Range("A7:G29,A34:G56,A61:G83").Copy
    Range("A1").PasteSpecial Paste:=xlPasteValues
    End Sub
    Refuse de fonctionner. Même si je sélectionne en manuel La plage (A1:A2;C8:C10), Excel me fait un KK nerveux
    Peux-tu me donner la version que tu utilises (moi, c'est la 2003) ?
    A+

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour sélectionner des cellules non contigues, maintenir Ctrl appuyé et cliquer sur les cellules (en tout cas sur Excel 2000).

    Et le code de sélection de Lebeniste fonctionne aussi.

    En ce qui concerne le problème Lebeniste :

    n'y aurait-il entre la feuille source et la feuille destination des différences de formatage : par exemple des cellules fusionnées ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Par défaut
    version 2003 aussi .....

    pour se qui est du ctrl et selection j'ai essayer , il ne depasse pas la meme ligne .....

  5. #5
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonsoir
    Pour sélectionner des cellules non contigues, utiliser la méthode Union(.....)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
    Dim Plage As Range
    Sheets("SHOP").Select
      Set Plage = Application.Union(Range("A7:G29"), _
                  Range("A34:G56"), Range("A61:G83"))
      Plage.Copy Destination:=[BD!A1]
    End Sub
    Bonne soirée

    Abed_H

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Par défaut
    desolé rien a faire il ne copie pas les données excedent 596 ,,,

    que faire ????

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Par défaut
    pourquoi que tout a coup c'est le titre qui est plus bon ????
    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
    Sub Ge()
    '
    ' G Macro
    ' Macro enregistrée le 2008-03-29 par André
    '
     
    'Dim Plage As Range
        Sheets("bd").Select
        Rows("2:30").Select
        Selection.Insert Shift:=xlDown
        Range("A3").Select
        Sheets("SHOP").Select
        Set Plage = Application.Union(Range("A7:G29"), ("A34:G56"), ("A61:G83"), ("A88:G110"), ("A115:G137"), ("A142:G164"), _
        Range("A169:G191"), ("A196:G218"), ("A223:G245"), ("A250:G272"), _
        Range("A277:G299"), ("A304:G326"), ("A331:G353"), ("A358:G380"), ("A385:G407"), ("A412:G434"), ("A439:G461"), ("A466:G488"), ("A493:G515"), _
        Range("A520:G542"), _
        Range("A547:G569"), _ bla bla bla tout le reste
    la c'est le sub ge() quiest en jaune ????

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour tlm,

    Ce n'est pas la ligne 596 qui coince, c'est le nombre d'arguments
    j'ai testé le code ci-dessous et cela fonctionne mais je ne peux plus ajouté un argument supplémentaire sinon ça coince
    [....] = argument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test2()
        Sheets("bd").Rows("2:30").Insert Shift:=xlDown
        Sheets("SHOP").Select
        Set Plage = Application.Union([A7:G29], [A34:G56], [A61:G83], [A88:G110], [A115:G137], _
            [A142:G164], [A169:G191], [A196:G218], [A223:G245], [A250:G272], [A277:G299], _
            [A304:G326], [A331:G353], [A358:G380], [A385:G407], [A412:G434], [A439:G461], _
            [A466:G488], [A493:G515], [A520:G542], [A547:G569], [A574:G596], [A606:G626], _
            [A676:G696], [A716:G736], [A786:G806], [A856:G876], [A926:G946])
        Sheets("bd").Select
        Plage.Copy Range("A3")
    End Sub

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Par défaut
    y-a un nombre d'argument maximun , je ne le savais pas .....


    je viverai avec ce max en attendant de trouver une facon de contourner


    encore merci fring

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il est vrai que c'est toujours un peu désorientant de ne pas connaître ces limites.

    L'exemple de Lebeniste comprenait 22 arguments et cela coinçait.

    J'ai fait un essai avec 25 arguments (Excel 2000) pas de problème.

    Fring dit que son exemple fonctionne et il a 28 arguments mais qu'à partir de 29 : problème.

    J'aurai pensé que cela pouvait aussi dépendre du nombre de caractères, mais pour l'exemple de Lebeniste : 212 caractères, ce n'est pas un nombre qui ressemble à des limites connues.

    Est-ce la mémoire disponible ?

    Il ne reste plus qu'à essayer de trouver un maximum qui fonctionne et de répéter l'opération plusieurs fois.

  11. #11
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour Jacques-Jean,

    En effet, j'ai également un peu du mal à comprendre les limites, normalement la fonction Union accepte 30 arguments et j'obtiens un bug à partir du 29ème.

    Il y a sans doute une explication logique mais pour le moment je reste dans le floue total.

    @ Lebeniste, pour contourner ce problème, la solution serait peut-être de créer plusieurs plages ou de voir si il n'y aurait pas moyen de trouver une boucle qui reprendrait les plages si celles ci sont de tailles similaires (ou de faire en sorte qu'elles le soient)

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 132
    Par défaut
    fring si tu es dans le flou ... je suis perdu moi .... je debute , mais je fais tjrs des test si un jour je trouve , je meriterai une etoile a cotéde mon nom

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

Discussions similaires

  1. Traitement d'erreur dans VBA
    Par charleshbo dans le forum VBA Access
    Réponses: 9
    Dernier message: 10/02/2006, 14h03
  2. Utilisation d'un résultat de requete dans VBA
    Par marie10 dans le forum Access
    Réponses: 3
    Dernier message: 30/01/2006, 10h29
  3. appel module dans vba
    Par scully2501 dans le forum Access
    Réponses: 3
    Dernier message: 14/09/2005, 16h37
  4. Réponses: 3
    Dernier message: 22/10/2004, 12h04
  5. [VB.NET]Copie dans le presse-papier
    Par San Soussy dans le forum Windows Forms
    Réponses: 9
    Dernier message: 19/03/2004, 15h18

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