VBA dans des cellules triées par excel.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Damocles

XLDnaute Nouveau
Bonjour à tous,

Ceci est mon tout tout premier programme en VBA et programme tout court d'ailleurs (j'imagine que ça se voit 😀).

Mon programme fonctionne à merveille, mais mon programme balaye toutes les cellules de la 1ère colonne (avec while not) tant qu'il n'en trouve pas une de vide il continu, mais j'aimerais également que mon programme tienne compte du filtre appliqué dans Excel, c'est à dire que j'aimerais qu'il ne prenne en compte dans ses calculs QUE les cellules affichées par le filtre.
Je n'arrive pas à le faire, j'ai trouvé sur internet une fonction de ce nom : xlcelltypevisible, je ne sais pas si sa peu m'aider si c'est la bonne ou quoi en tout cas je ne sais pas l'utiliser...

Code:
Dim annule_int As Integer, annule_ext As Integer, en_cour_int As Integer, en_cour_ext As Integer

Sub nb_oui_interne()
Dim numero As Integer, nb_oui_interne As Integer
nb_oui_interne = 0
numero = 5
annule_int = 0
annule_ext = 0
en_cour_int = 0
en_cour_ext = 0
    While Not IsEmpty(Sheets(1).Cells(numero, 1))
        If Sheets(1).Cells(numero, 2) = "Interne" Then
            If Sheets(1).Cells(numero, 13) = "Oui" Then
            nb_oui_interne = nb_oui_interne + 1
            End If
            If Sheets(1).Cells(numero, 13) = "Annulé" Then
            annule_int = annule_int + 1
            End If
            If Not IsEmpty(Sheets(1).Cells(numero, 1)) Then
            en_cour_int = en_cour_int + 1
            End If
        End If
    numero = numero + 1
    Wend
    
Sheets(3).Cells(6, 16) = nb_oui_interne
Sheets(3).Cells(8, 16) = en_cour_int
Sheets(3).Cells(9, 16) = annule_int
End Sub

Voilà je vous remercie d'avance de vos réponses, si vous avez besoin d'info n'hésitez pas.
 
Re : VBA dans des cellules triées par excel.

Merci de ta réponse rapide Pierrejean mais celà ne fonctionne pas.

Code:
Dim annule_int As Integer, annule_ext As Integer, en_cour_int As Integer, en_cour_ext As Integer

Sub nb_oui_interne()
Dim numero As Integer, nb_oui_interne As Integer
nb_oui_interne = 0
numero = 5
annule_int = 0
annule_ext = 0
en_cour_int = 0
en_cour_ext = 0
    While Not IsEmpty(Sheets(1).Cells(numero, 1))
         If Sheets(1).Rows(numero).Visible = True Then
            If Sheets(1).Cells(numero, 2) = "Interne" Then
                If Sheets(1).Cells(numero, 13) = "Oui" Then
                nb_oui_interne = nb_oui_interne + 1
                End If
                If Sheets(1).Cells(numero, 13) = "Annulé" Then
                annule_int = annule_int + 1
                End If
                If Not IsEmpty(Sheets(1).Cells(numero, 1)) Then
                en_cour_int = en_cour_int + 1
                End If
            End If
        End If
    numero = numero + 1
    Wend
    
Sheets(3).Cells(6, 16) = nb_oui_interne
Sheets(3).Cells(8, 16) = en_cour_int
Sheets(3).Cells(9, 16) = annule_int
End Sub

J'ai bien ajouté la ligne mais sa bug sur cette ligne en me mettant : "Propriété ou méthode non géré par cet objet".
 
Dernière édition:
Re : VBA dans des cellules triées par excel.

Bravo ! J'ai juste remplacé true par false, parceque c'est l'inverse que je voulais mais merci beaucoup !

Peux-tu histoire de nourrir ma culture, juste m'expliquer cette ligne :

Code:
If Sheets(1).Rows(numero).Hidden = False Then

Je comprend que l'on impose que la ligne ne soit pas cachée mais je n'ai pas bien compris la syntaxe, cette notion de ligne.quelque chose = False j'ai du mal à comprendre comment on peut utiliser celà. Je ne sais pas si je m'exprime bien, c'est dur à expliquer à l'écris ...

Quoiqu'il en soit merci déjà de ta réponse ! C'est toujours agréable de trouver des gens pour t'aider sur internet et qui ne prenne pas de haut !
 
Re : VBA dans des cellules triées par excel.

Re

On peut traduire par

Si Ligne(5).cachée est faux alors
Hidden est une propriété De Row qui signifie Caché
Row fait partie de l'ensemble Rows et rows(5) est la 5eme ligne (ici de la feuille sheets(1))
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
177
Réponses
1
Affichages
180
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
Réponses
2
Affichages
201
Retour