Sélectionner la dernière cellule non vide d'une plage de données

nonoTT

XLDnaute Junior
Bonjour
Le code suivant fonctionne bien sauf que quand la plage sélectionnée ne contient q'une seule cellule comme dans l'exemple ci-joint cellule F45, la formule prend des cellules de la plage suivante F48:F54.
Comment faire pour corriger cela :
Code:
Sub Compter_Rejet()

Dim Valeur1, Valeur2, Comptage As Variant
Dim i As Integer

For i = 1 To 1000
    If Range("F" & i) = "" Then    
        
        Comptage = Range("F" & i + 1, Range("F" & i + 1).End(xlDown)).Address    
        
ActiveSheet.Range("F" & i).Formula = "=COUNTIF(" & Comptage & ",""Rejeté"")"


End If
Next i

End Sub
 

Pièces jointes

  • exemple.xlsx
    65.3 KB · Affichages: 145
  • exemple.xlsx
    65.3 KB · Affichages: 159
  • exemple.xlsx
    65.3 KB · Affichages: 161

TempusFugit

XLDnaute Impliqué
Re : Sélectionner la dernière cellule non vide d'une plage de données

Pour le filtre:
Données/Filtre/Filtre automatique (prendre comme critère par exemple : Rejeté)

Pour des détails sur l'emploi de la fonction SOUS.TOTAL
Se rendre dans l'aide d'Excel.
 

nonoTT

XLDnaute Junior
Re : Sélectionner la dernière cellule non vide d'une plage de données

MErci mais ca ne me convient pas.
En fait, je souhaite compter pour chaque paramètre listé en colonne A, le nb de "Rejeté".
La plage représentant un paramètre est comprise entre la cellule F i +1 et la dernière cellule non vide située en colonne F juste au dessus du paramètre suivant.
Merci
 

TempusFugit

XLDnaute Impliqué
Re : Sélectionner la dernière cellule non vide d'une plage de données

Je te mets un petit exemple par macro
(bien qu'il soit plus simple de le faire manuellement)

Code:
Sub Macro2()
Range("A1:I1000").AutoFilter Field:=6, Criteria1:="Rejeté"
MsgBox Application.WorksheetFunction.Subtotal(3, Range("F2:F1000").SpecialCells(xlCellTypeVisible))
End Sub

Cette macro renvoie 41 (soit le nombre de rejété)
 

nonoTT

XLDnaute Junior
Re : Sélectionner la dernière cellule non vide d'une plage de données

C'est gentil mais je ne souahite pas compté le nb de rejté pour l'ensemble de la feuille mais paramètre par paramètre.
Je te mets un petit exemple par macro
(bien qu'il soit plus simple de le faire manuellement)

Code:
Sub Macro2()
Range("A1:I1000").AutoFilter Field:=6, Criteria1:="Rejeté"
MsgBox Application.WorksheetFunction.Subtotal(3, Range("F2:F1000").SpecialCells(xlCellTypeVisible))
End Sub

Cette macro renvoie 41 (soit le nombre de rejété)
 

nonoTT

XLDnaute Junior
Re : Sélectionner la dernière cellule non vide d'une plage de données

Bonjour
J'ai essayé ca ne marche pas dans mon cas car les plages doivent être sélectionnées du haut vers le bas.
Il faut que la macro :
sélectionne la cellule vide sur la même ligne que le paramètre
compte dans la plage de données en colonne F délimité par 2 paramètres (en colonne A) le nb de rejeté
Puis passe au paramètre suivant.
 

nonoTT

XLDnaute Junior
Re : Sélectionner la dernière cellule non vide d'une plage de données

Ca marche presque.
Merci pour la formule que j'ai intégré en macro.
Par contre une partie de ma formule ne fonctionne pas.
LA sélection de l'adresse RiC1O ne marchepas, il ne la comprends pas.
Voir exemple


Code:
Sub Compter_Rejet()
Dim i As Integer
Range("B65536").End(xlUp).Offset(1, -1).Activate
ActiveCell.Value = "FIN"

Range("J2").Activate
ActiveCell.FormulaR1C1 = "=IF(RC[-9]="""","""",""x"")"
Range("J2").Select
Selection.AutoFill Destination:=Range("J2:J65536"), Type:=xlFillDefault

For i = 1 To 1500
If Range("F" & i) = "" Then
Range("F" & i).Activate
ActiveCell.FormulaR1C1 = _
        "=COUNTIF((INDIRECT(ADDRESS(ROW()+1,6)&"":""&ADDRESS(MATCH(""x"",RiC10:R1000C10,0)-1+ROW(),6))),""Rejeté"")"
        
End If
Next i

End Sub
 

Pièces jointes

  • exemple.xlsm
    39.4 KB · Affichages: 109
  • exemple.xlsm
    39.4 KB · Affichages: 117
  • exemple.xlsm
    39.4 KB · Affichages: 106

TempusFugit

XLDnaute Impliqué
Re : Sélectionner la dernière cellule non vide d'une plage de données

Bonjour de nouveau


LA sélection de l'adresse RiC1O ne marchepas, il ne la comprends pas.

C'est normal si écrit de cette façon.
Essaies en modifiant ainsi
Code:
 "=COUNTIF((INDIRECT(ADDRESS(ROW()+1,6)&"":""&ADDRESS(MATCH(""x"",R" & i & "C10:R1000C10,0)-1+ROW(),6))),""Rejeté"")"
 

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 191
Membres
103 152
dernier inscrit
Karibu