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 :

Automatiser un code [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    Bonjour à vous,
    Je bute sur un code que je n'arrive pas à automatiser au niveau des colonnes. En effet, je copie une plage de cellules vers une autre plage de cellule sauf que le nombre de colonne est variable. J'ai pensé à une boucle for mais je n'y arrive pas.
    Voici mon code :

    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
    Sub test()
     
    Dim Lig As Integer
     
    For Lig = 9 To 20
     
            Range(Cells(9, 7), Cells(20, 10)).Value = Range(Cells(8, 7), Cells(8, 10)).Value
            Range(Cells(10, 11), Cells(20, 14)).Value = Range(Cells(9, 11), Cells(9, 14)).Value
            Range(Cells(11, 15), Cells(20, 18)).Value = Range(Cells(10, 15), Cells(10, 18)).Value
            Range(Cells(12, 19), Cells(20, 22)).Value = Range(Cells(11, 19), Cells(11, 22)).Value
            Range(Cells(13, 23), Cells(20, 27)).Value = Range(Cells(12, 23), Cells(12, 27)).Value
            Range(Cells(14, 28), Cells(20, 31)).Value = Range(Cells(13, 28), Cells(13, 31)).Value
            Range(Cells(15, 32), Cells(20, 35)).Value = Range(Cells(14, 32), Cells(14, 35)).Value
            Range(Cells(16, 36), Cells(20, 40)).Value = Range(Cells(15, 36), Cells(15, 40)).Value
            Range(Cells(17, 41), Cells(20, 44)).Value = Range(Cells(16, 41), Cells(16, 44)).Value
            Range(Cells(18, 45), Cells(20, 49)).Value = Range(Cells(17, 45), Cells(17, 49)).Value
            Range(Cells(19, 50), Cells(20, 53)).Value = Range(Cells(18, 50), Cells(18, 53)).Value
            Range(Cells(20, 54), Cells(20, 57)).Value = Range(Cells(19, 54), Cells(19, 57)).Value
     
    Next Lig
     
    End Sub
    D'avance merci pour votre aide

    En cherchant sur le site j'ai trouvé un bout de code mais le résultat renvoyé est faux :

    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
    Sub test()
     
        Dim TabMois
        Dim i As Long
        Dim ColDepart As Long
     
    With Worksheets("Menu")
        TabMois = Application.WorksheetFunction.Transpose(.Range(.Cells(1, 1), .Cells(12, 1)))
    End With
     
    With Worksheets("CA")
     
        ColDepart = 7
     
        For i = LBound(TabMois) To UBound(TabMois)
     
            Range(Cells(8 + i, ColDepart), Cells(20, ColDepart + TabMois(i) - 1)).Value = _
            Range(Cells(7 + i, ColDepart), Cells(7 + i, ColDepart + TabMois(i) - 1))
     
            'Range(Cells(9, 7), Cells(20, 10)).Value = Range(Cells(8, 7), Cells(8, 10)).Value
     
        ColDepart = ColDepart + TabMois(i)
        Next i
    End With
     
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    c'est normal que le décalage sur certaines lignes ne soit pas le même ?

    sur 3 lignes, il y a des décalages de 5 colonnes par rapport à la ligne précédente

    décalage de 4
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range(Cells(10, 11), Cells(20, 14)).Value = Range(Cells(9, 11), Cells(9, 14)).Value
    Range(Cells(11, 15), Cells(20, 18)).Value = Range(Cells(10, 15), Cells(10, 18)).Value
    décalage de 5 sur certaines parties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range(Cells(13, 23), Cells(20, 27)).Value = Range(Cells(12, 23), Cells(12, 27)).Value
    Range(Cells(14, 28), Cells(20, 31)).Value = Range(Cells(13, 28), Cells(13, 31)).Value
    décalage de 5 sur d'autres parties
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range(Cells(15, 32), Cells(20, 35)).Value = Range(Cells(14, 32), Cells(14, 35)).Value
    Range(Cells(16, 36), Cells(20, 40)).Value = Range(Cells(15, 36), Cells(15, 40)).Value
    utiliser une boucle en devient compliqué ... et probablement plus long à rédiger que ce que tu as actuellement

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Regarde si j'ai bien compris avec offset et resize

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim i As Integer
     
    With Worksheets("Feuil1")
        For i = 0 To 11
            .Cells(9 + i, 7).Offset(, 4 * i).Resize(12 - i, 4).Value = .Cells(8 + i, 7).Offset(, 4 * i).Resize(, 4).Value
        Next i
    End With
    End Sub

    EDIT

    Bien vu joe.levrai

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour mercatog,

    j'ai foncé tête baissé pour faire la boucle après avoir lu les 3 premières lignes .... et me suis ensuite rendu compte du décalage quand les résultats se décalaient sur ma feuille de test

  5. #5
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    Bonjour à vous deux !
    Merci pour votre aide.
    Pour répondre à la question oui c'est normal qu’il y des décalages il y a des décalages de 4 parfois de 5 et même la dernière de 3.
    Par contre le code offset et resize commence bien mais à la fin de mon tableau il y a un décalage.
    Est-ce que je peux par exemple dans une feuille préciser le nombre de décalage qu'il y a étant donné que c'est variable d'une semaine à l'autre.

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Plutôt n'y a t-il pas moyen de déceler le nombre de décalages par code même (indices qu'on peut interpréter).

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

Discussions similaires

  1. Automatiser le code
    Par stagiairecg dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/03/2015, 16h08
  2. Aide automatiser mon code de réccupération de mail
    Par superbuisson dans le forum Langage
    Réponses: 0
    Dernier message: 18/10/2014, 18h03
  3. Automatiser un code VBA
    Par biket91 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/08/2014, 12h09
  4. Automatiser le "Code Metrics"
    Par Bluedeep dans le forum Visual Studio Team System
    Réponses: 2
    Dernier message: 03/06/2009, 17h53

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