rss
VBA, compter le nombre de ligne non masquée
par rhalimi13
 Fil de Discussions
Statut : Résolu
vendredi 4 janvier 2008 à 09:26:50
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
Répondre à rhalimi13  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le vendredi 4 janvier 2008 à 10:03:42 Fil de Discussions
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..

toujours zen
Répondre à gbinforme

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le vendredi 4 janvier 2008 à 16:29:23 Fil de Discussions
merci bcp de ta solution,

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


MERCIIIIIIIIIII ENCOREEEE
Répondre à rhalimi13

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le vendredi 4 janvier 2008 à 16:43:57 Fil de Discussions
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
Répondre à rhalimi13

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le vendredi 4 janvier 2008 à 18:10:09 Fil de Discussions
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 !



toujours zen
Répondre à gbinforme

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le lundi 7 janvier 2008 à 11:07:05 Fil de Discussions
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
Répondre à rhalimi13

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le lundi 7 janvier 2008 à 11:25:04 Fil de Discussions
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


toujours zen
Répondre à gbinforme

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le mardi 8 janvier 2008 à 09:41:28 Fil de Discussions
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
Répondre à rhalimi13

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le mardi 8 janvier 2008 à 10:23:59 Fil de Discussions
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.

toujours zen
Répondre à gbinforme

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le mardi 8 janvier 2008 à 16:12:07 Fil de Discussions
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
Répondre à rhalimi13

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le mardi 8 janvier 2008 à 17:31:53 Fil de Discussions
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.

toujours zen
Répondre à gbinforme

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le mercredi 9 janvier 2008 à 08:51:44 Fil de Discussions
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 !
Répondre à rhalimi13

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le jeudi 10 janvier 2008 à 14:47:48 Fil de Discussions
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
Répondre à rhalimi13

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le jeudi 10 janvier 2008 à 17:58:15 Fil de Discussions
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 !

toujours zen
Répondre à gbinforme

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le jeudi 7 février 2008 à 22:04:26 Fil de Discussions
salut mon ami

de retour

je voudrais sil te plais

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


merci
Répondre à rhalimi13

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le jeudi 7 février 2008 à 23:55:08 Fil de Discussions
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

Le savoir est la seule matière qui s'accroît quand on la partage. (Socrate)
Répondre à gbinforme

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le vendredi 8 février 2008 à 09:02:05 Fil de Discussions
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
Répondre à rhalimi13

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le mardi 12 février 2008 à 10:09:19 Fil de Discussions
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
Répondre à rhalimi13

18


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par gbinforme, le mardi 12 février 2008 à 10:19:07 Fil de Discussions
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

Le savoir est la seule matière qui s'accroît quand on la partage. (Socrate)
Répondre à gbinforme

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi71, le mardi 12 février 2008 à 10:52:37 Fil de Discussions
re

lorsque j'execute la macro;


il m'affiche un message erreur: variable d'objet ou variable de bloc with non définie
Répondre à rhalimi71

22


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi71, le mardi 12 février 2008 à 11:25:01 Fil de Discussions
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
Répondre à rhalimi71

23


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi71, le mardi 12 février 2008 à 12:43:31 Fil de Discussions
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
Répondre à rhalimi71

24


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi71, le mardi 12 février 2008 à 12:54:23 Fil de Discussions
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
Répondre à rhalimi71

26


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi71, le mardi 12 février 2008 à 16:26:17 Fil de Discussions
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
Répondre à rhalimi71

27


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Par rhalimi13, le samedi 23 février 2008 à 23:47:46 Fil de Discussions