Boucle vba excel

nadeson Messages postés 11 Date d'inscription lundi 28 mai 2012 Statut Membre Dernière intervention 6 juin 2012 - 5 juin 2012 à 11:16
nadeson Messages postés 11 Date d'inscription lundi 28 mai 2012 Statut Membre Dernière intervention 6 juin 2012 - 6 juin 2012 à 10:42
Bonjour à tous voici mon programme,
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

5 réponses

DamienGB Messages postés 30 Date d'inscription mercredi 23 mai 2012 Statut Membre Dernière intervention 13 août 2012
5 juin 2012 à 17:58
C'est pratique en tout cette sélection des données si ça fonctionne

Worksheets("fp92").Range(Cells(2, 1), Cells(2, 13).End(xlDown)).Select


J'utilise toujours des trucs lourds du type

cornerup=Worksheets("fp92").Range(Cells(2,1).Address(RowAbsolute:=False, ColumnAbsolute:=False)).Address
cornerdown=Worksheets("fp92").Range(Cells(2,13).Address(RowAbsolute:=False, ColumnAbsolute:=False)).End(xlDown).Address

Range(cornerup & ":" & cornerdown).Select
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 juin 2012 à 18:51
Bonjour,
J'attends qu'un administrateur ait bien voulu déplacer cette discussion, qui n'a rien à faire dans la section VB.Net, hein ... !
En attendant : précise ce que tu veux exactement sélectionner (la/les plage(s))
Ma solution viendra après le déplacement et sur la base de ta réponse à cette question.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 juin 2012 à 18:55
Explication : mon intransigeance est motivée par le fait que toutes tes autres discussions, qui auraient dû être ouvertes dans la section Langages dérivés > VBA l'ont été (ouvertes) indument ailleurs. L'une a été déplacée par un administrateur et tu continues à ne pas respecter cette règle essentielle.
Si tu veux de l'aide : conforme-toi au moins à cette discipline fondamentale.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
5 juin 2012 à 21:28
Ah oui ! (en plus) ===>>
Le souci est au niveau du filtre pour la période

Je ne vois aucun filtre dans ton code !
Tu l'as bien caché !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nadeson Messages postés 11 Date d'inscription lundi 28 mai 2012 Statut Membre Dernière intervention 6 juin 2012
6 juin 2012 à 10:42
Désolé, je ne savais pas que je me trompais de forum pour les post. Je ferai plus attention la prochaine fois.
Pour le filtre, c'est pourtant marqué sur mon programme. Et sinon j'ai trouvé la solution: le problème venait du row(z).Clearcontents. J'effacais toute la rangée au lieu que d'une plage de cellules
0
Rejoignez-nous