VBA, compter le nombre de ligne non masquée

Résolu/Fermé
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 - 4 janv. 2008 à 09:26
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 - 3 mars 2008 à 15:26
Bonjour,

Je voudrais compter le nombre de ligne non masquée et ensuite afficher le resultat

MERCIIIIIIIIIIIIIIIIIIIII

Private Sub CommandButton3_Click()

Dim R As Long
Dim c As Integer

With Application.WorksheetFunction
If c.EntireRow.hiden = False Then
R = .CountA(Range("A3:A100"))
MsgBox ("il y a " & R & " cellules non vides dans la colonne A")

End With

End Sub
A voir également:

27 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 janv. 2008 à 10:03
bonjour

Comme ceci cela devrait mieux fonctionner
Private Sub CommandButton3_Click() 
Dim R As Double
Dim l As Double
For l = 1 To Cells(65536, 1).End(xlUp).Row
    If Not Rows(l).Hidden Then R = R + 1
Next l
MsgBox ("il y a " & R & " lignes visibles dans la colonne A")
End Sub

Ce sont les lignes visibles qui sont comptées et pas les cellules non vides..
2
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
4 janv. 2008 à 16:29
merci bcp de ta solution,

je vais la travailler parceque je suis débutant en vba


MERCIIIIIIIIIII ENCOREEEE
0
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
4 janv. 2008 à 16:43
Franchement ta solution marche mieux que le programme que m'a été remis sur un forum
le tiens ne me compte que les visible, ca c excellent!!

si j'ai un autre pb, tu pourras m'aider?

thanks
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 janv. 2008 à 18:10
bonjour

Merci de ton message et c'est tout de même normal de fournir du code qui correspond au besoin ?

si j'ai un autre pb, tu pourras m'aider?

Pas de problème mais bientôt c'est toi qui va aider les autres !

0

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

Posez votre question
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
7 janv. 2008 à 11:07
Bonjour,

je reviens vers toi, esperant ne pas trop t'en demander

voila j'ai un souci avec inputBox, lorsque je click sur annuler ou si je ne saisi rien a inputbox, VBA active le debogueur,
je souhaiterais qu'il ferme la inputbox si j'annule,

tu peux voir, MEEEERCI




Private Sub CommandButton2_Click()

Range("a1:I30").Interior.ColorIndex = xlNone

Dim msg As Double

msg = InputBox("quelle est la moyenne glissante? ")


'If msg = "" Then Exit Sub

'Dim msg
'msg = InputBox
'If msg = vbCancel Then
'Exit Sub
'End If

Dim c As Range

For Each c In ActiveSheet.Range("a1:I30")

If c < msg And c <> "" Then
c.Interior.Color = RGB(168, 168, 168)
End If

Next

End Sub
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
7 janv. 2008 à 11:25
bonjour

Je te propose de gérer ainsi l'annulation :
On Error Resume Next        ' si erreur on passe à la ligne suivante
msg = InputBox("quelle est la moyenne glissante? ")

If msg = 0 Then Exit Sub    ' si "Annuler" est utilisé on sort de la macro
On Error GoTo 0             ' le contrôle erreur est remis en fonction

Tu peux aussi le faire en changeant ta réservation
Dim msg As Variant

 msg = InputBox("quelle est la moyenne glissante? ")

If msg = "" Then Exit Sub    ' si "Annuler" est utilisé on sort de la macro
0
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
8 janv. 2008 à 09:41
re

j'ai testé ce que tu m'a donné, mais je rencontre tjs des soucis, soit il lance le débeugage ou il m'affiche 2 fois la inputbox

mon exercice est de colorier des cellules inf a x%

merci de ton aide
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
8 janv. 2008 à 10:23
bonjour

Je t'ai fourni 2 possibilités : tu choisis l'une ou l'autre, pas les deux.

Le plus simple est de passer "msg" en variant.
0
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
8 janv. 2008 à 16:12
re bonjour

j'ai mis msg comme variant, au niveau de la inputbox ca marche nickel, par contre il ne me respecte plus la condition et me colories toutes les cellules, il cherche pas a comprendre,

merci
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
8 janv. 2008 à 17:31
bonjour

Avec ceci, cela devrait mieux fonctionner.
For Each c In ActiveSheet.Range("a1:I30")

If c < Val(msg) And c <> "" Then
        c.Interior.Color = RGB(168, 168, 168)
Else
        c.Interior.Color = xlNone
End If

Next

Lorsque tu saisis une valeur dans inputbox, c'est du texte et donc il faut le traduire en numérique pour comparer.
Dans les formules excel le fait parfois mais pas en VBA.

Il est plus prudent aussi de décolorer si l'on ne rempli pas la condition.
0
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
9 janv. 2008 à 08:51
Bonjour, je vien de faire le test avec

Val( msg) et On Error Resume Next, CA MARCHE NICKEL !! PERFECT

donc 'val', comme tu m'a expliqué, traduit le texte en numérique (vue que c de l'inputBox, c'est cela si je ne me trompe pas)

et le 'On Error Resume Next', permet de passer à la ligne suivante si l'utilisateur se trompe et saisie du Texte ( par erreur de frappe)


par contre pas besoin du else, sinon dans la boucle il me colorie toute la plage de travail apres avoir réalisé la condition

autrement on m'a proposé ca;If ((CDec(c.Value) < CDec(msg)) And (CStr(c.Value) <> "")) Then, je ne sais commt ce que ca veut dire et en faisant du copie coller, ca ne marché pas

Je n'ai plus qu'a te remercier et te dire à bientôt

Bonne journée !
0
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
10 janv. 2008 à 14:47
bonjour, encore moi

j'ai ce code qui fonctionne, mais je souhaiterais lui dire d'aller de 2 jusqu'a la fin du tableau, sans définir la dernierre cellule (ici=15)
comment je fais?


Private Sub CommandButton1_Click()
Dim var As Integer
var = 2
For var = 2 To 15
If Cells(var, 2) > 100 Then
Range(Cells(var, 1), Cells(var, 2)).Font.Bold = True
End If
Next
End Sub
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
10 janv. 2008 à 17:58
bonjour

Avec un autre type de boucle peut-être
Private Sub CommandButton1_Click()
Dim var As Integer
var = 2
Do While Cells(var, 1) <> ""
    If Cells(var, 2) > 100 Then
        Range(Cells(var, 1), Cells(var, 2)).Font.Bold = True
    End If
    var = var + 1
Loop
End Sub

Tu fais progresser ton indice ligne et tu t'arrêtes si la cellule est vide : à adapter avec ton tableau !
0
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
7 févr. 2008 à 22:04
salut mon ami

de retour

je voudrais sil te plais

convertir une date (jj/mm/année) en semaine correspondant


merci
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
7 févr. 2008 à 23:55
bonjour

Avec l'année en A1, cette formule est plus efficace que la fonction NO.SEMAINE qui n'est pas fiable en Europe du moins.
=ENT(MOD(ENT((A1-2)/7)+0,6;52+5/28))+1
0
rhalimi13 Messages postés 23 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 3 mars 2008 1
8 févr. 2008 à 09:02
Bonjour,

eh bien merci merci et Merci !!

parceque j'ai passé toute la soirée hier , de 17h à 23h (bien sur pas en continue) et je n'ai rien trouvé ds google

bien !!

est ce que tu peux me dire comment tu l'as trouvé que je puisse améliorer mes connaissance en info;

merci encore

etr passe une bonne journée!

a bientôt
0
bonjour,

tu peux m'aider sil te plais


j'aurais souhaiter colorier les cellules suivant le contenu de la cellule dans la colonne b

ma plage de donnée est : "c2;l27", et mes condition sont sur la collone B

j'ai realisé un code mais il ne marche pas

voici:

Private Sub CommandButton1_Click()

Dim c As Range
Dim var As Integer
var = 2

For Each c In ActiveSheet.Range("c2:l27")

If c <> "" And Cells(var, 2) = mp Then
c.Interior.ColorIndex = 4
End If
var = var + 1
Next

If c <> "" And Cells(var, 2) = mc Then
c.Interior.ColorIndex = 3
End If
var = var + 1

If c <> "" And Cells(var, 2) = df Then
c.Interior.ColorIndex = 1
End If
var = var + 1

End Sub
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
12 févr. 2008 à 10:19
bonjour


Si j'ai compris...
Private Sub CommandButton1_Click()

Dim c As Range
Dim var As Integer
var = 2

For Each c In ActiveSheet.Range("c2:l27")

If c <> "" And Cells(c.row, var) = mp Then
c.Interior.ColorIndex = 4
End If

Next

If c <> "" And Cells(c.row, var) = mc Then
c.Interior.ColorIndex = 3
End If


If c <> "" And Cells(c.row, var) = df Then
c.Interior.ColorIndex = 1
End If


End Sub
0
rhalimi71 Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 février 2008
12 févr. 2008 à 10:52
re

lorsque j'execute la macro;


il m'affiche un message erreur: variable d'objet ou variable de bloc with non définie
0
rhalimi71 Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 février 2008
12 févr. 2008 à 11:25
re

je viens de tester ton code corrigé, eh bien ca marche qd je met des chiffres a la place de mp, mc et md, mais pourquoi il ne prnds pas du texte??

merci
0
rhalimi71 Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 février 2008
12 févr. 2008 à 12:43
de retour;

ton code fonctionne parfaitement si a la place de "mp", "mc", et "df" je met du chiffre: 1,2...;

mais moi c du texte malheuresement;

si t'as une solution à mon probleme, merci d'avance;

a bientôt
0
rhalimi71 Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 février 2008
12 févr. 2008 à 12:54
salut

Ouuuuf, Ouuuf Ouuuf j'ai enfin trouver !!!!!!!!


Eh bien tout simplement DANS le code que tu m'a retouché, IL FALLAIT simplement que je METTE: mp, mc, df entre guillemets:

If c <> "" And Cells(c.Row, var) = "mp" Then
If c <> "" And Cells(c.Row, var) = "mc" Then
If c <> "" And Cells(c.Row, var) = "df" Then



A mon avis , tu les avais oublier, lol


UNNNNN TRESSS GRAAAAN MERCCCI A TOI

une tres bonne journée à toi et à bientôt
0
rhalimi71 Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 février 2008
12 févr. 2008 à 16:26
bonjour,

j'ai noté !
mon savoir s'accroit avec toi en tt cas !

mille fois merci de ton aide

PS: si tu n'est pas connecté, est ce possible de joindre by mail?

à bientôt
0
franchement, tu m'as repondus, je suis tt content!!

oui c ca, en fait je veux colorier mes cellules dans la plage ( Range("c2:l27") ) suivant le contenu des cellules de la colonne b2

j'ai recupéré ton code mais ca bloque,

sil te plais aide moi, merrrrrrcciciiiiii

comment je peux t'envoyer le fichier excel autrement
0
rhalimi71 Messages postés 6 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 février 2008
12 févr. 2008 à 10:47
si tu as besoin de plus d'explication je suis connecté, merrci
parceque le code que m'as posté me semble tres correct, mais pourquoi il ne reponds pas?
0