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 :

For next avec Step [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Finance
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Par défaut For next avec Step
    Bonjour,

    Je cherche à copier des données colonnes dont la quantité est variables en décalant tous les 3 colonnes et les coller sur des lignes. Je pensais faire une boucle avec For next 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
    23
    24
    25
    26
    27
    28
    29
    30
    Sub ECART ()
     
    Dim FirstDate As Date
    Dim LastDate As Date
    Dim Ecartdates As Long
    Dim i As Integer
    Dim C As Integer
     
    FirstDate = Range("Datedeb").Value
    LastDate = Range("Datefin").Value
     
    Ecartdates = DateDiff("d", FirstDate, LastDate) + 1
    NBDATE = Ecartdates
     
    'Pour le nb de ligne
    For i = 1 To NBDATE
     
        'Pour le nb de colonne en décalant toutes les 3 colonnes
        For C = 1 To NBDATE step 3
     
    'Je veux commencer à la colonne 5 jusqu'au nb de colonne défini par NBDATE et coller cette information à la ligne 47 de la colonne 3. Évidemment, le nb de ligne est défini par NBDATE
     
    Cells(47 + i, 3) = Cells(38, c + 4)
     
     
    Next
     
        Next
     
    End sub
    Merci énormément,

  2. #2
    Membre Expert Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 671
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 671
    Par défaut
    J'ai réécrit votre code ainsi:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Sub test05()
     
    Dim FirstDate As Date
    Dim LastDate As Date
    Dim Ecartdates As Long
    Dim i As Integer
    Dim j As Integer
    Dim Source As Variant
    Dim Destination As Variant
    Dim myCol As Long
     
     myCol = 69
     
     Sheets("sheet5").Select
     
     FirstDate = Sheets("sheet5").Range("Datedeb").Value
     LastDate = Sheets("sheet5").Range("Datefin").Value
     
     Ecartdates = DateDiff("d", FirstDate, LastDate) + 1
     NBDATE = Ecartdates
     
     'Pour le nb de ligne
     For i = 1 To NBDATE
     
         'Pour le nb de colonne en décalant toutes les 3 colonnes
         For j = 1 To NBDATE Step 3
     
         'Je veux commencer à la colonne 5 jusqu'au nb de colonne défini par NBDATE
         'et coller cette information à la ligne 47 de la colonne 3.
         'Évidemment, le nb de ligne est défini par NBDATE
        Source = Chr(myCol) & 38
        Destination = "C" & (47 + i)
        Sheets("sheet5").Range(Destination).Value = Sheets("sheet5").Range(Source).Value
     
         Next j
            myCol = myCol + 1
     Next i
     
    End Sub
    qui fonctionne, mais je ne vois pas très bien ce que vous voulez faire; pourriez-vous poster une image de votre feuille avec les données commençant par E38 ainsi que les résultats attendus en C48 ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Finance
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Par défaut
    Classeur1.xlsx

    Voici le fichier. Merci pour la réponse. Je vais essayer le code demain matin.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour SteveRafferty
    J'appelle simplement ton attention su la notation (cells) que tu utilises
    Dans cells(x,y) , x est la ligne et non la colonne (y est la colonne)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Finance
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Par défaut @Zekraoui_Jakani
    Bonjour,

    Le code fonctionne très bien alors merci pour ça.

    Par ailleurs, il ne fait pas de saut de 3 colonnes. Je m'explique, je cherche à prendre l'information à partir de la colonne E ligne 38 et sauter de 3 colonnes lors du début de la boucle et coller cette information qui est variable à la colonne C en débutant à la ligne 48. Donc, on saute 3 colonnes qui débute à la colonne E (E, ensuite H,K,N,O etc.). et on colle tout ça en C48 vers le bas.

    Pour ce qui est de l'image, je n'arrive pas à l'ajouter. Peux-tu m'indiquer comment?

    Un grand merci pour cette aide précieuse!

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour, bonjour !

    Une boucle est inutile en appliquant le B-A-BA d'Excel, une simple formule de calculs (INDEX) et ce même en VBA !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Demo1()
        VA = Application.Index(Feuil1.[A38:BJ38], , [{5,8,11,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62}])
        Feuil1.[E48].Resize(UBound(VA)).Value = Application.Transpose(VA)
    End Sub

    Une variante calculant automatiquement la matrice des colonnes à extraire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Demo2()
        With Feuil1
            VA = Application.Index(.[A38:BJ38], , Filter(.Evaluate("IF(MOD(COLUMN(E38:BJ38),3)=2,COLUMN(E38:BJ38))"), False, False))
            .[E48].Resize(UBound(VA)).Value = Application.Transpose(VA)
        End With
    End Sub
    Le B-A-BA évitant les usines à gaz …

    Je laisse le code par boucle aux débutants car il suffit d'un peu de jugeote, juste en réchauffant une paire de neurones !

    Voilà, voilà !

    _________________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

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

Discussions similaires

  1. Boucle For Next avec 2 variables
    Par neninio31 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/07/2019, 20h46
  2. Prob boucle for next avec recherche chaine
    Par papajn dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 11/08/2011, 19h44
  3. [PHP 5.2] for avec step
    Par bailamos dans le forum Langage
    Réponses: 1
    Dernier message: 05/06/2009, 09h20
  4. [VB.net] Boucle for next avec un tableau
    Par grand_prophete dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 12h08
  5. qbasic : pause avec FOR-NEXT
    Par clood200 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 08/08/2003, 17h51

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