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 :

[VBA-E] Fusionner 2 feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut [VBA-E] Fusionner 2 feuilles
    Mon probleme est strictement similaire à celui-là:
    http://www.developpez.net/forums/sho...d.php?t=133597
    Je veux fusionner deux pages. Seulement, ça bloque déja à la premiere etape. Pourquoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim ranklow As Long, rankhigh As Long
    ranklow = Worksheets("infos clients CP<5").Cells.SpecialCells(xlCellTypeLastCell).Row
    rankhigh = Worksheets("infos clients CP>=5").Cells.SpecialCells(xlCellTypeLastCell).Row
    'inutile pour l'instant
     
    MsgBox (ranklow)
    Worksheets("infos clients CP<5").Range(Cells(2, 1), Cells(ranklow, 255)).Copy
    'c'est ici que j'ai un bug
     
    Worksheets("infos clients").Range(Cells(2, 1), Cells(ranklow, 255)).Paste

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    ok merci! Bon je sais tjrs pas ce qui va pas. Copy a-t-il besoin d'un select peut etre?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    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
    Sub conca()
    Dim ranklow As Long, rankhigh As Long
    ranklow = Worksheets("infos clients CP<5").Cells.SpecialCells(xlCellTypeLastCell).Row
    rankhigh = Worksheets("infos clients CP>=5").Cells.SpecialCells(xlCellTypeLastCell).Row
    Worksheets("infos clients CP<5").Select
    Range(Cells(2, 1), Cells(ranklow, 256)).Select
    Selection.Copy
    Worksheets("infos clients").Select
    Range("A2").Select
    ActiveSheet.Paste
    Worksheets("infos clients CP>=5").Select
    Range(Cells(2, 1), Cells(rankhigh, 256)).Select
    Selection.Copy
    Worksheets("infos clients").Select
    Range(Cells(ranklow + rankhigh - 1, 1)).Select
    ActiveSheet.Paste
    voila plus exactement mon code apres quelques modifs.

    je passe par plus de select finalement puisque je ne pige pas ce qui ne va pas. En revanche il n'aime pas cette ligne:

    Range(Cells(ranklow + rankhigh - 1, 1)).Select

    le probleme ne vient pas du ranklow+rankhigh-1 car meme avec un nombre, ça ne passe pas.

    Pourquoi à votre avis?

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    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
    Dim ranklow As Long, rankhigh As Long
    ranklow = Worksheets("infos clients CP<5").Cells.SpecialCells(xlCellTypeLastCell).Row
    rankhigh = Worksheets("infos clients CP>=5").Cells.SpecialCells(xlCellTypeLastCell).Row
    Worksheets("infos clients CP<5").Select
    Range(Cells(2, 1), Cells(ranklow, 256)).Select
    Selection.Copy
    Worksheets("infos clients").Select
    Range("A2").Select
    ActiveSheet.Paste
    Worksheets("infos clients CP>=5").Select
    Range(Cells(2, 1), Cells(rankhigh, 256)).Select
    Selection.Copy
    Worksheets("infos clients").Select
    Cells(ranklow + 1, 1).Select
    ActiveSheet.Paste
    ok probleme réglé tel quel. En revanche si quelu'un sait pourquoi mon premier code ne marchait pas, je suis toujours preneur. En fait, j'aimerai bien étendre mon savoir à l'aide d'un expert de vba

  5. #5
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    D'après le comportement de l'application, je parierais que ton code se trouve dans une feuille.

    Je mets TOUJOURS dans un module, le code qui doit manipuler des données dans les feuilles .

    En réalité, je ne mets, dans le code des feuilles, que les procédures événementielles propres aux feuilles .

    De plus, dès que je dois faire référence à une feuille, j'en crée une instance (Set wksSrc = ..., par exemple).
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Par défaut
    merci pour la reponse.

    Dis je peux te demander?

    - Pourquoi les mettre dans un module exclusivement? Pour des raisons de netteté et de lisibilité ou est-ce que ça à des répercussions effectives sur le code ou la performance?

    - J'ai lu dans la doc de programmation que "les collections coutent relativement cher en memoire", et qu'il faut donc les "affecter à une variable fortemet typé". Ce que tu me redis là. Pourrais-tu me montrer quoi changer pour appliquer ce type de méthode? Je pense être mal à l'aise avec les variables de type range en fait.

    imaginons que Maplage soit une range, disons B1:C2, comment j'accede à la valeur en C2? Je dirais maplage.cells(2,2)? Value sert-il a quelque chose? Et comment se fait-il que l'utilisation d'une variable fasse gagner de la mémoire?

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

Discussions similaires

  1. [VBA][Excel]Copier une feuille dans un nouveau classeur
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2020, 12h51
  2. [XL-2003] Fusionner 2 feuilles en VBA
    Par ananar dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 21/09/2010, 13h52
  3. [VBA-E] Ordonner les feuilles d'un classeur
    Par ptitsoleil87 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 19/12/2005, 16h49
  4. [VBA] [Excel] Selection des feuilles
    Par KOFJCH dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 18h18
  5. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56

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