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 vba excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut boucle vba excel
    Bonjour à tous,
    voila mon programme
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    Sub définitionCarte()
     
    Worksheets("def").Range("B10:B11").ClearContents
     
    Application.DisplayAlerts = False 'supprime le message d'alerte d'Excel
    If Charts.Count = 0 Then
    Else: Charts.Delete 'efface le graph
    End If
    Application.DisplayAlerts = True 'active les messages d'alertes d'Excel
     
    If Worksheets("fp92").Cells(2, 1).Value = "" Then
    Else: Worksheets("fp92").Range("A2:K500").ClearContents
    Worksheets("fp92").Range("O2:Y500").ClearContents
    Worksheets("fp92").Range("AC2:AM500").ClearContents
    End If
     
     
    Worksheets("def").Range("B10:B11").NumberFormat = "dd/mm/yyyy"
     
    'requète en fonction du type d'analyseur et du produit pour affichage dans données
     
    If Cells(12, 2).Value = "FP92 5G2" Then
     
        fp92
     
    End If
     
    'filtre selon la période
    Dim datedeb As Date
    Dim datefin As Date
    Dim myrange As Range
    Dim z As Integer
    datedeb = DateAdd("m", -12, Date)
    datefin = Date
    Worksheets("def").Cells(10, 2).Value = datedeb
    Worksheets("def").Cells(11, 2).Value = datefin
     
     
    Worksheets("fp92").Activate
    For z = 2 To 700
        If Cells(z, 1).Value < datedeb Or Cells(z, 1).Value > datefin Then
            Rows(z).ClearContents
        End If
    Next z
     
    If Cells(2, 1).Value = "" Then
        Cells(2, 1).End(xlDown).Select
        Selection.Offset(-1, 0).Select
        Set myrange = Range(Cells(2, 1), Selection)
        myrange.EntireRow.Delete
    End If
     
    Worksheets("fp92").Range(Cells(2, 1), Cells(2, 13).End(xlDown)).Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Key2:=Range("A2"), Order2:=xlAscending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
     
    For z = 2 To 700
        If Cells(z, 15).Value < datedeb Or Cells(z, 15).Value > datefin Then
            Rows(z).ClearContents
        End If
    Next z
     
    If Cells(2, 15).Value = "" Then
        Cells(2, 15).End(xlDown).Select
        Selection.Offset(-1, 0).Select
        Set myrange = Range(Cells(2, 15), Selection)
        myrange.EntireRow.Delete
    End If
     
    Worksheets("fp92").Range(Cells(2, 15), Cells(2, 27).End(xlDown)).Select
    Selection.Sort Key1:=Range("P2"), Order1:=xlAscending, Key2:=Range("O2"), Order2:=xlAscending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
     
    For z = 2 To 700
        If Cells(z, 29).Value < datedeb Or Cells(z, 29).Value > datefin Then
            Rows(z).ClearContents
        End If
    Next z
     
    If Cells(2, 29).Value = "" Then
        Cells(2, 29).End(xlDown).Select
        Selection.Offset(-1, 0).Select
        Set myrange = Range(Cells(2, 29), Selection)
        myrange.EntireRow.Delete
    End If
     
    Worksheets("fp92").Range(Cells(2, 29), Cells(2, 41).End(xlDown)).Select
    Selection.Sort Key1:=Range("AD2"), Order1:=xlAscending, Key2:=Range("AC2"), Order2:=xlAscending, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
     
    End Sub
    Le souci est au niveau du filtre pour la période. Donc j'applique un filtre pour une plage de cellule puis une autre,etc...... Mais justement il ne s'applique pas seulement aux cellules que je sélectionne mais à toutes les cellules de la feuille et je ne vois pas pourquoi
    Merci d'avance pour vos réponses

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je n'ai pas vu de filtre dans ton code. Je ne dois pas être réveillé... quel est le numéro de ligne concerné ?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut
    C'est à partir de la ligne 29 jusquà la fin du programme.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Un peu au hasard... Quand on supprime des lignes, il faut partir de la dernière ligne en remontant jusqu'à la première :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For z = 700 To 2 Step -1
    au lieu de :


  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut
    Merci pour ta réponse mais je crois que le problème vient de Rows(z).ClearContents
    En effet, je filtre bien une plage de cellules donnée mais je supprime toute la rangée y compris les plages de cellules pour le prochain filtre. D'où ma question: comment supprimer une rangée mais pour une certaine plage de cellules par exemple la rangée 2 des cellules 1 à 13

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(z, 1), Cells(z, 13)).ClearContents

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut
    Sa ne change rien. Le problème y est toujours. En fait je remarque le premier filtre marche mais pas les suivants.
    Après meilleur réflexion, je crois que le problème vient de myrange.EntireRow.Delete
    je supprime la rangée entière alors que je ne veux supprimer qu"une plage de cellules. Comment faire à ce moment la?

  8. #8
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(z, 1), Cells(z, 13)).Delete xlShiftUp

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 34
    Par défaut
    Merci beaucoup,
    c'était sa le problème. Et là sa marche nickel

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

Discussions similaires

  1. Creation boucle vba excel
    Par gaever dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/12/2014, 15h41
  2. Boucle VBA Excel
    Par BENNASR dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/11/2014, 14h13
  3. Boucles VBA Excel
    Par Sniper69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/11/2014, 23h13
  4. Boucle VBA excel
    Par RICO_85 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/03/2011, 17h00
  5. Boucles vba Excel
    Par viscere dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2007, 07h07

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