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] Simplification pour repetition


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
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Par défaut [VBA-E] Simplification pour repetition
    Salut a tous et a toutes,voila mon pb je dois remplir 744 cellules d un tableau excel en faisant plusieurs tri d affile....mais le pb c est que mon code est bcp bcp trop long...


    Voila une des parties que je dois copie 744 fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Worksheets("requete_ticket_horaire").Activate
    nomb = 0
     
    For i = 2 To 65000
        If Cells(i, 8).Value Like "SLI8T1" And _
           Cells(i, 15).Value Like "7" And _
           Cells(i, 16).Value Like "1" Then
     
            nomb = nomb + 1
     
        End If
    Next
    Worksheets("SLI8T1").Activate
    Range("C12") = nomb
    c un tri pour savoir le nombre de "ticket"(pour mon cas) par jour et par heure...avez vous une simplification pour une la repetition?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    Déjà, tu dis que tu dois remplir 744 cellules et tu boucle jusqu'à la 65000 lignes, il faut arréter avant pour cela voir la propiété End de l'objet Range pour t'arrêter avant

    Starec

  3. #3
    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
    Dans le même esprit que Starec, tu peux aussi tester la dernière ligne renseignée de ta feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
        For i = 2 to DerniereLigne

  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
    Tiens, ça ne simplifie pas le code mais c'est plus rapide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub SimplifierPourRépéter()
        Dim LaPlage As Range, nomb As Integer, LaCell As Range
        Set LaPlage = Range(Cells(2, 1), Cells(Range("A1").SpecialCells(xlCellTypeLastCell).Row, 1))
        For Each LaCell In LaPlage
            nomb = nomb + (Cells(LaCell.Row, 8).Value Like "SLI8T1" And _
                Cells(LaCell.Row, 15).Value Like "7" And _
                Cells(LaCell.Row, 16).Value Like "1") * -1
        Next
        Worksheets("SLI8T1").Range("C12") = nomb
    End Sub
    Plus simple, j'ai pas
    Tu dis
    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 46
    Par défaut
    ...ben ca simplifie pas vraiment mais c vrai que c utile^^

    sinon voila une partie de ce que je dois remplir pour mieu vous montre

    Pièce jointe 9382

    en fait on m as dit(et je voulais avoir une confirmation^^)de declare une variable H pour heure,J pour jour,et de les incremente a chaque fois pour simplifie mùon code....mais j ai pas vraiment compris ce qu il voulait dire.....

  6. #6
    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
    Si mon code n'est pas "simpliste", il fait ce que tu demandes mais est efficace. C'est en général ce qu'on demande au code. En outre, il t'évite les déclarations de variables H I J K L...
    Quand je parlais de simplicité, je parlais pour la compréhension, pas de complexité du code.

    Citation Envoyé par Tu
    en fait on m as dit(et je voulais avoir une confirmation^^)de declare une variable H pour heure,J pour jour,et de les incremente a chaque fois pour simplifie mùon code....mais j ai pas vraiment compris ce qu il voulait dire.....
    Moi non plus.

    NB - Si tu veux lier un fichier ou une image, fais-le ici. Pour un fichier, tu le Zip, pour une image, envoie-le en jpg. Ton fichier est inaccessible

Discussions similaires

  1. [VBA-E] Aide pour simplification de mon code.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2006, 11h34
  2. [VBA-Excel]Problème pour remplir une listview
    Par Le Djé dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/01/2006, 16h27
  3. [VBA-E] Problème pour enregistrer en csv (; et non ,) par macro
    Par bounette dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/12/2005, 09h34
  4. [Livre] Débuts sur VBA 6.3 pour EXCEL 2002
    Par thulvar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2005, 10h45
  5. [VBA-A] Condition pour boucle if
    Par ptitegrenouille dans le forum Access
    Réponses: 6
    Dernier message: 23/11/2005, 09h33

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