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 :

Boucle For à plusieurs variables


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Boucle For à plusieurs variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    compte = Cells(Rows.Count, 79).End(xlUp)(2).Row
     
        For j = 102 To 225 Step 123
     
            For i = compte + 4 To compte + 23
     
                wbrecu.ActiveSheet.Cells(i - 4, 79).Value = wbcache.ActiveSheet.Cells(j, i).Value
     
            Next i
            compte = Cells(Rows.Count, 79).End(xlUp)(2).Row
        Next j
    Bonjour ce que je veux faire c'est de faire en sorte que le i de wbcache augmente toujours de 4 à 23.

    Est-ce que je peux faire une boucle for avec to variable dedans dans le style

    for i = blablabla to blablabla and k = 4 to 23

    Mon k remplacerai le i de cette cellule

    Merci

    Marie

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Pour répondre à ta question, non tu ne peux pas mettre différentes plages dans une boucle.

    Concernant ton code, il me semble bizarre, tu obtiens le résultat voulu ?
    Dans cette partie, le i et le j ne doivent pas être inversés ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wbcache.ActiveSheet.Cells(j, i).Value
    Essaye aussi d'éviter les ActiveCell, ActiveSheet, ActiveMachin...et utilise les noms , tôt ou tard tu risques d'avoir des surprises parce que ça ne sera pas la bonne feuille active, ou pas la bonne cellule ou pas le bon classeur.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Oui c les bons indice, car dans un les valeurs sont horizontales et dans l'autre verticales.

    Mais si je ne peux pas faire ca, alors je fais quoi

    Car j'ai essayer de faire un autre for , mais les réponses étaient toutes la dernière valeur, car il écrivait toujours par dessus

    et aussi , pour les active, ben je sais juste pas comment le changer, parce qu'en plus mes fichiers vont toujours changer

    c certain qu'il y a une solution bien simple, mais je la vois pas...

    Marie

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par carpediem2807 Voir le message
    Mais si je ne peux pas faire ca, alors je fais quoi
    J'aimerais pouvoir te répondre mais ya trop longtemps que je n'ai plus fait de spiritisme !
    Tu pars de quoi ? Tu veux obtenir quoi ?
    Si tu ne parviens pas à l'expliquer clairement (je sais que ce n'est pas toujours évident de mettre des mots sur un truc qu'on a dans la tête), fais un petit fichier avec quelques lignes de ce que tu souhaiterais obtenir et on arrivera bien à trouver une solution

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    ok je vais tenté d'être le plus clair possible!

    Donc, j'ai un fichier A et un fichier B.

    Je veux que les données de A4 à A23 et ceux de F4 à F23 du fichier B soient tranférées dans la colonne F du fichier A.

    Je ne veux pas de trou, je veux que les données soient à la suite l'une de l'autre.

    De plus, je dois pouvoir exécuter ce code plusieurs fois par semaine, donc voila pourquoi j'utilise la variable compte, qui m'indique le nombre de ligne dans ma colonne afin d'y place les nouvelles données à sa suite.

    Mon problème présentement c'est que le i 'ma varible pour les ligne, suit l'incrémentation. C'Est parfait pour ce qui est des lignes de mon fichier A., mais pour le fichier B(celui ou je prends mes données) il doit toujours être entre 4 et 23

    J'espère avoir été beaucoup plus clair

    Marie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    wbrecu.ActiveSheet.Cells(1, 79).Value = "DRS"
     
        compte = Cells(Rows.Count, 79).End(xlUp)(2).Row
     
        For j = 102 To 225 Step 123
     
            For i = compte + 4 To compte + 21
     
                wbrecu.ActiveSheet.Cells(i - 4, 79).Value = wbcache.ActiveSheet.Cells(j, i).Value
     
            Next i
            compte = Cells(Rows.Count, 79).End(xlUp)(2).Row
     
        Next j

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2008
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    wow , je sais pas ce que tu as fais, mais j.ai tout compris en l'expliquant en détail...

    Bref, je devais juste soustraire le compte .... (i-compte).value , me donnais mon 4 et 23.

    Merci de ton aide

    Marie

  7. #7
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    euuh...je n'ai encore rien fait

    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    compte = wbrecu.Sheets(1).Cells(Rows.Count, 6).End(xlUp)(2).Row
     
    For j = 1 To 6 Step 6
        For i = 4 To 23
            wbrecu.Sheets(1).Cells(compte, 6) = wbcache.Sheets(1).Cells(i, j)
            compte = compte + 1
        Next i
    Next j

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour, fring. Ca va ?

    Voyons donc un peu la boucle j

    essaye donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command1_Click()
      For j = 1 To 6 Step 6
         MsgBox j
      Next j
    End Sub
    tu peux m'expliquer l'utilité de cette boucle ou j ne sera jamais égal à autre chose que 1 ? (car je suis vieux et un peu lent "à la comprenure")...

    Faut rigoler un peu, non ? ...

    Amitiés.

    EDIT : ne te trompe surtout pas sur le sens de mon intervention ! en te taquinant, je me taquine ... en paraissant me moquer, c'est aussi de moi que je me moque (il vaut mieux que je ne me lance pas dans l'inventaire de certains trucs ... euh.... bizarres que je retrouve dans certains de mes codes ...)...

  9. #9
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Salut uc

    bien vu j'ai glissé chef
    voilà ce que c'est de ne pas tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    compte = wbrecu.Sheets(1).Cells(Rows.Count, 6).End(xlUp)(2).Row
     
    For j = 1 To 7 Step 6
        For i = 4 To 23
            wbrecu.Sheets(1).Cells(compte, 6) = wbcache.Sheets(1).Cells(i, j)
            compte = compte + 1
        Next i
    Next j
    là la boucle prendra bien en compte la colonne A et F

    Mais en essayant de réfléchir un peu (si si ça m'arrive...) ceci devrait bien faire l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wbcache.Sheets(1).Range("A4:A23").Copy wbrecu.Sheets(1).Cells(Rows.Count, 1).End(xlUp)(2)
    wbcache.Sheets(1).Range("F4:F23").Copy wbrecu.Sheets(1).Cells(Rows.Count, 1).End(xlUp)(2)

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

Discussions similaires

  1. boucle for et variable dans un array
    Par ledisciple dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/05/2011, 09h07
  2. Console R: boucle for - plusieurs lignes
    Par mathieu_r dans le forum R
    Réponses: 2
    Dernier message: 11/02/2011, 14h12
  3. [Débutant] boucle for, récupérer variables
    Par 20905313t dans le forum Images
    Réponses: 3
    Dernier message: 06/02/2011, 19h11
  4. Addition dans une boucle For de variables incrémentées
    Par heberco dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/01/2011, 19h48
  5. Boucle for et variable
    Par Krispy dans le forum Linux
    Réponses: 2
    Dernier message: 07/09/2006, 19h03

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