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] Deplacement de lignes et boucle


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
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Par défaut [VBA-E] Deplacement de lignes et boucle
    Bonjour tout le monde,

    je viens ici pour demander votre aide, dans mon travail j'ai besoins de traiter des fichiers excel qui sont assez en vrac on peut dire
    c'est la premiere fois que je fais des macro en vba

    en fait mon pb c'est que j'ai des données sur plusieurs lignes et que j'aimerais toutes les rassembler sur une seule ( 4 lignes ), mais comme il y a plusieurs fois ces lignes car ceux sont des données chaques 10 minutes, j'aimerais faire une boucle jusqu'à la fin du classeur
    j'arrive a selectionner la plage de cellules que je veux mais j'arrive pas a les coller automatiquement a la suite

    voilà mon code actuel:

    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
    Dim lignecourante As Integer
        Dim Index As Integer
        Index = 3
        lignecourante = Index + 1
     
     
        Range(cells(1,lignecourante),cells(37,lignecourante)).Select
        Selection.Cut
        Range(cells(3,Index)).Select
        ActiveSheet.Paste
     
        lignecourante = lignecourante + 1
        Range(cells(1,lignecourante),cells(28,lignecourante)).Select
        Selection.Cut
        Range("cells(3,Index)").Select
        ActiveSheet.Paste
     
        lignecourante = lignecourante + 1
        Range(cells(1,lignecourante),cells(8,lignecourante)).Select
        Selection.Cut
        Range(cells(3,Index)).Select
        ActiveSheet.Paste
     
        lignecourante = lignecourante + 1
        Range(cells(1,lignecourante),cells(17,lignecourante)).Select
        Selection.Cut
        Range(cells(3,Index)).Select
        ActiveSheet.Paste
    c'est un peu le bordel, mais j'essaye de comprendre un peu le fonctionnement, là je vais le deplacement pour un bloc de 4 lignes, mais ça marche pas

    si vous avez des idées je suis prenneur

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ce qui te manque, c'est le code pour trouver le N° de la première ligne vide pour coller tes lignes... si j'ai bien compris...
    Essaie avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        PremièreLigneVide = Range("A1").CurrentRegion.End(xlDown).Row + 1
    ou ça (c'est plus mieux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        PremièreLigneVide = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Par défaut
    merci de ton aide ouskel'n'or, mais ça ne marche toujours pas,
    la macro me selectionne et coupe la premiere ligne mais ne la deplace pas si je laisse "range(cells(index,3)).select", si je ne met pas cette ligne, il ne coupe rien
    par contre je sais pas s'il faut definir PremiereLigneVide, ni meme en quoi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim lignecourante As Integer
        Dim Index As Integer
        Index = 3
     
        lignecourante = 4
        Range(Cells(lignecourante, 1), Cells(lignecourante, 43)).Select
        Selection.Cut
        'Range(Cells(Index, 3)).Select
        'PremièreLigneVide = Range("A1").CurrentRegion.End(xlDown).Row + 1
        PremièreLigneVide = Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1
        ActiveSheet.Paste

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub DéplacerUneLigne()
    Dim lignecourante As Integer
        Dim Index As Integer
        Index = 3
        lignecourante = 4
        PremièreLigneVide = Range("A65535").End(xlUp).Row + 1
        Rows(lignecourante).EntireRow.Cut
        Rows(PremièreLigneVide).Insert Shift:=xlDown
    End Sub
    Teste ça

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Par défaut
    merci pour ta reponse,

    ça deplace toute la ligne tout en bas du tableau, je vais essayer de modifier le code pour l'adapter pour le mettre a la suite de ma ligne

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Par défaut
    désolé de faire un double post, mais j'ai encore un pb, au lieu de copier la ligne a la suite de ligne du dessus ça la met a la fin du fichier en fait
    qu'est ce qu'il faut modifier dans la premiere ligne pour faire ça
    j'ai testé en mettant un cells(variable,999) a la plce de "A65535" mais il me met une erreur et meme Row en Column mais marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PremièreColVide = Range("A65535").End(xlUp).Row + 1
    Rows(lignecourante).EntireRow.Cut
    Rows(PremièreColVide).Insert Shift:=xlDown
    merci encore pour vos futures reponses

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

Discussions similaires

  1. [VBA-E]Numero de ligne et boucle de colonne
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2006, 12h10
  2. [VBA-E]ajout de ligne automatique
    Par deathsurfer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/01/2006, 13h22
  3. [VBA-E] rechercher une ligne pour remplacer?
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/12/2005, 10h31
  4. [VBA-E] Parcourir les lignes filtrées après un filtre auto
    Par leptitdave dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/10/2005, 13h14
  5. [VBA][Excel]Insérer une ligne
    Par loverdose dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2005, 16h27

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