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/Excel] Boucler sur les colonnes


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

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Par défaut [VBA/Excel] Boucler sur les colonnes
    Bonjour j'ai une macro qui me permet
    de récapituler des valeurs calculées sur une première feuille en supprimant les lignes vides.

    Cette macro effectue un test sur 500 lignes des 9 premières colonnes.

    ce que j'aimerai faire c'est qu'une fois le test effectué sur les 500 lignes des 9 premières colonnes (donc que ma boucle est terminée) ; il s'effectue de nouveau mais cette fois ci sur les colonnes 11 à 19...puis de 21 à 29...puis de 31 à 39 et ainsi de suite en décalant à chaque fois le test de 10 colonnes

    Voila le code source que j'utilise :
    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
     
    sub recap()
    dim i as integer
    dim compteur as integer
    dim test as variant
     
    test = ""
    compteur = 5 
     
    for i = 6 to 500 
    test = worksheets("feuil1").cells(i,1).value
    if test <> "" then
    compteur = compteur + 1
    worksheets("récap").cells(compteur,1).value = worksheets("feuil1").cells(i,1).value 
    worksheets("récap").cells(compteur,2).value = worksheets("feuil1").cells(i,2).value 
    worksheets("récap").cells(compteur,3).value = worksheets("feuil1").cells(i,3).value
    worksheets("récap").cells(compteur,4).value = worksheets("feuil1").cells(i,4).value
    worksheets("récap").cells(compteur,5).value = worksheets("feuil1").cells(i,5).value
    worksheets("récap").cells(compteur,6).value = worksheets("feuil1").cells(i,6).value 
    worksheets("récap").cells(compteur,7).value = worksheets("feuil1").cells(i,7).value 
    worksheets("récap").cells(compteur,8).value = worksheets("feuil1").cells(i,8).value 
    worksheets("récap").cells(compteur,9).value = worksheets("feuil1").cells(i,9).value
     
    end if 
    next i 
     
    end sub
    j'ai essayé quelque petit truc sans grande réussite,
    un petit conseil et coup de main me serai fort utile pour pouvoir terminer ma macro. Merci à quiconque prendra le temps de se pencher sur mon problème
    sincère salutations,

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Par défaut
    Tu peux toujours essayer 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    sub recap()
     
    dim i as integer
    dim j as integer
    dim indice as integer
    dim compteur as integer
    dim test as variant
     
    	test = ""
    	compteur = 5
    	indice = 0
     
    		for j = 1 to nb_de_fois_que_tu_souhaite_le_faire 
      			for i = 6 to 500 
      			test = worksheets("feuil1").cells(i,1 + ( indice * 10 )).value
        				if test <> "" then
    					compteur = compteur + 1
    					worksheets("récap").cells(compteur,1 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,1).value 
    					worksheets("récap").cells(compteur,2 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,2).value 
    					worksheets("récap").cells(compteur,3 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,3).value
    					worksheets("récap").cells(compteur,4 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,4).value
    					worksheets("récap").cells(compteur,5 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,5).value
    					worksheets("récap").cells(compteur,6 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,6).value 
    					worksheets("récap").cells(compteur,7 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,7).value 
    					worksheets("récap").cells(compteur,8 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,8).value 
    					worksheets("récap").cells(compteur,9 + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,9).value
    				end if 
    			next i
    		indice = indice + 1
    		next j
     
    end sub
    mais je ne te promet rien !
    Tiens moi au courant.
    Bon courage !!!

  3. #3
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    Bonjour,

    Bon déjà en rajoutant une boucle de plus on gagne en clarté (dis moi si ça marche), et du coup si tu veux tu changes la valeur max de j en le nombre de colonnes que tu veux (sauf si tu tiens à le faire 10 par 10)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For i = 6 To 500
        test = Worksheets("feuil1").Cells(i, 1).Value
        If test <> "" Then
            compteur = compteur + 1
            For j = 1 To 9
                Worksheets("récap").Cells(compteur, j).Value = Worksheets("feuil1").Cells(i, j).Value
            Next
        End If
    Next
    Cwain

    Argh trop tard !

  4. #4
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    Bon, vu que je m'étais arrêté en chemin, je poursuis l'effort, voilà ce que je trouve (sans tester)
    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
    Dim NombreDeFoisQueTuVeux As Integer
    NombreDeFoisQueTuVeux = 5
     
    For k = 1 To NombreDeFoisQueTuVeux
        For i = 6 To 500
            test = Worksheets("feuil1").Cells(i, 1).Value
            If test <> "" Then
                compteur = compteur + 1
                For j = 1 To 9
                    Worksheets("récap").Cells(compteur, j + (k - 1) * 10).Value _
                        = Worksheets("feuil1").Cells(i, j + (k - 1) * 10).Value
                Next
            End If
        Next
    Next

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

    Informations forums :
    Inscription : Février 2007
    Messages : 43
    Par défaut
    Merci à vous deux en compilant les informations ma source devient :


    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 recap()
    dim h as integer
    dim i as integer
    dim j as integer
    dim indice as integer
    dim compteur as integer
    dim test as variant
     
    	test = ""
    	compteur = 5
    	indice = 0
     
    for j = 1 to 24 
    for i = 6 to 500 
    test = worksheets("feuil1").cells(i,1 + ( indice * 10 )).value
    if test <> "" then
    compteur = compteur + 1
    worksheets("récap").cells(compteur,h + ( indice * 10 ) ).value = worksheets("feuil1").cells(i,h + ( indice * 10 ) ).value 
    next h
    end if
     
    indice = indice + 1
    compteur = 5 'pour que toutes les plages recopiées commence à la ligne 6
    next j
     
    end sub
    mais les calculs engendré par cette macro sont assez long, qques minutes de reflexion pour excel.....mais bon ca marche
    merci bcp

  6. #6
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    Résolu alors ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    tu parcours quand même environ 12000 cellules + le traitement de copie de l'une vers l'autre ==> normal que çà coit un peu long

    Si tu veux optimiser ton code, faudrait l'empecherde boucler pour rien
    Par exemple, si dans tes 500 lignes, il n 'y a que les 150 premières qui sont renseignés, faudrait sortir de ta boucle si tu déctectes que la cellule est vide

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

Discussions similaires

  1. [VBA Excel] documentation sur les classes Excel
    Par Ragmaxone dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/07/2008, 17h08
  2. [VBA/Excel]recherche sur 2 colonnes
    Par rodrigue62 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/03/2007, 17h35
  3. [VBA-E] boucler sur une colonne
    Par ricoree78 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 14/02/2007, 20h04
  4. [VBA-Excel] Question sur les Treeview
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/12/2006, 16h21
  5. [Sources][FAQ VBA Excel] Informations sur les applications
    Par SilkyRoad dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/10/2006, 18h38

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