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 :

Deplacer des donnees


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 32
    Par défaut Deplacer des donnees
    Bonjour a toutes et a tous!
    Je cherche a deplacer des donnees pour les mettre en colonne:
    sur la ligne 2 je veux selectionner G2:S2 pour le mettre en A1 sur une autre feuille, puis T2:AF2 a mettre en B2 de l'autre feuille, puis AG2:AS2... puis meme operation avec la ligne du dessous jusqu'a la ligne 10
    Y a t il une facon simplifiée de mettre ca sous forme de code sachant que si tout un groupe de cellules (par exemple T2:AF2) est vide il faut le laisser de coté?

    Merci!

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Salut,

    Essaie ceci:

    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
    Option Explicit
    
    Sub CopieTransposee()
        Dim Cpt As Byte, Colonne As Byte
        Dim Plage As Range
        
        Application.ScreenUpdating = False
            Feuil2.Cells.Clear
        
            For Cpt = 1 To 13
                Set Plage = Feuil1.Range("G2:S2").Offset(, (Cpt - 1) * 13)
                
                If Application.Evaluate("=COUNT(Feuil1!" & Plage.Address & ")") <> 0 Then
                    Colonne = Colonne + 1
                    Plage.Copy
                    Feuil2.Cells(1, Colonne).PasteSpecial Transpose:=True
                End If
            Next
            
            Set Plage = Nothing
        Application.ScreenUpdating = True
    End Sub
    ++
    Minick

    EDIT:
    J'ai ajoute la partie en vert pour que la formule pointe bien sur le bonne feuille

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 32
    Par défaut Fin du code
    Salut Minick,
    merci pour ta reponse, mais la fin du programme n'apparait pas sur ton message, peux tu me la renvoyer stp?
    Merci!

  4. #4
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Pourtant je vois bien le code moi

    Je le remets (j'ai copié ce qu'il y avait dans mon post precedent):
    Option Explicit
    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
     
    Option Explicit
     
    Sub CopieTransposee()
        Dim Cpt As Byte, Colonne As Byte
        Dim Plage As Range
     
        Application.ScreenUpdating = False
            Feuil2.Cells.Clear
     
            For Cpt = 1 To 13
                Set Plage = Feuil1.Range("G2:S2").Offset(, (Cpt - 1) * 13)
     
                If Application.Evaluate("=COUNT(Feuil1!" & Plage.Address & ")") <> 0 Then
                    Colonne = Colonne + 1
                    Plage.Copy
                    Feuil2.Cells(1, Colonne).PasteSpecial Transpose:=True
                End If
            Next
     
            Set Plage = Nothing
        Application.ScreenUpdating = True
    End Sub
    ++
    Minick

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 32
    Par défaut Probleme
    Merci Minick pour ta reponse, j'ai vu recopier ton code
    en revanche le resultat de la macro n'est pas bon car il presente chaque tranche de donnees sous forme de colonne
    en fait je voulais les garder alignées mais les mettre les tranches les unes en dessous des autre pour que le tout forme une colonne...

  6. #6
    Membre chevronné
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Par défaut
    Re,

    En relisant ton post, je m'apercois que je suis passe a cote de beaucoup de choses...

    Tu as des données de G2 à S11 puis T2:AF11 puis etc...
    Je vais essayer de reformuler parce que j'ai des doutes...:
    Tu veux copier G2:S2 en A1:A13
    T2:AF2 en B2:B14
    etc...
    puis G3:S3 en A14:A26
    T3:AF3 en B15:B27
    etc...

    Le decalage d'une ligne entre chaque plage est-il voulu?
    si il manque des donnees dans la plage G2:S2, faut-il eliminer les cellules vides
    pour tout regrouper?
    si il ny a aucune donnee, les plages suivantes doivent-elles conserver leur position (la colonne) vont elles se decaler d'une colonne vers la gauche?

    J'attends tes precisions pour revoir ma copie.

    ++
    Minick

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

Discussions similaires

  1. Pbs pour Glisser-Deplacer des noeuds dans un TreeView.
    Par psau dans le forum C++Builder
    Réponses: 3
    Dernier message: 08/09/2004, 21h02
  2. Réponses: 5
    Dernier message: 11/12/2003, 14h45
  3. Comment inserer des donnee de type Large Object !!
    Par josoft dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/07/2003, 11h21
  4. [] Impression des donnees sur etiquettes
    Par der dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/12/2002, 15h43
  5. importer des donnees dans interbase
    Par ms91fr dans le forum InterBase
    Réponses: 3
    Dernier message: 25/11/2002, 17h43

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