| VBA, compter le nombre de ligne non masquée par rhalimi13 |
vendredi 4 janvier 2008 à 09:26:50 |
|
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 |
merci bcp de ta solution,
je vais la travailler parceque je suis débutant en vba MERCIIIIIIIIIII ENCOREEEE |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 ! |
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 |
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 |
salut mon ami
de retour je voudrais sil te plais convertir une date (jj/mm/année) en semaine correspondant merci |
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) |
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 |
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 |
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)
|