Excel - VBA - Reconnaissance d'une céllule
Fermé
gerald13500
Messages postés
2
Date d'inscription
vendredi 4 février 2011
Statut
Membre
Dernière intervention
7 février 2011
-
4 févr. 2011 à 12:45
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 7 févr. 2011 à 12:12
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 7 févr. 2011 à 12:12
A voir également:
- Excel - VBA - Reconnaissance d'une céllule
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Verrouiller cellule excel - Guide
- Excel compter cellule couleur sans vba - Guide
4 réponses
Bonjour,
Peut-être comme ceci : ???
Info
Peut-être comme ceci : ???
Option Explicit Sub CompteCellules() Dim Cpt As Long, I As Long, J As Long Dim Flag As Boolean Application.ScreenUpdating = False Flag = False Cpt = 0 For I = 1 To 60 For J = 1 To 60 Cells(I, J).Select With Selection If (.Borders(xlEdgeLeft).LineStyle = xlContinuous) Then Flag = True Else Flag = False End If If (.Borders(xlEdgeTop).LineStyle = xlContinuous And Flag) Then Flag = True Else Flag = False End If If (.Borders(xlEdgeBottom).LineStyle = xlContinuous And Flag) Then Flag = True Else Flag = False End If If (.Borders(xlEdgeRight).LineStyle = xlContinuous And Flag) Then Flag = True Else Flag = False End If If (Flag) Then Cpt = (Cpt + 1) End If End With Next J Next I Application.ScreenUpdating = True MsgBox CStr(Cpt) End Sub '
Info
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
Modifié par lermite222 le 4/02/2011 à 14:03
Modifié par lermite222 le 4/02/2011 à 14:03
Bonjour,
Remarques,
tu commence à la ligne 1 mais tu met les résultats dans cette même ligne ??
Tu veux compter sur 60 colonnes ??
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Remarques,
tu commence à la ligne 1 mais tu met les résultats dans cette même ligne ??
Tu veux compter sur 60 colonnes ??
Sub Compter() Dim Lig As Long, Col As Integer For Lig = 2 To 60 For Col = 1 To 60 If Cells(Lig, Col).Interior.ColorIndex <> xlNone Then [A1] = [A1] + 1 If Cells(Lig, Col).Borders(xlEdgeLeft).LineStyle <> xlNone Then [B1] = [B1] + 1 Next Col Next Lig End Sub
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
gerald13500
Messages postés
2
Date d'inscription
vendredi 4 février 2011
Statut
Membre
Dernière intervention
7 février 2011
Modifié par gerald13500 le 7/02/2011 à 08:34
Modifié par gerald13500 le 7/02/2011 à 08:34
Bonjour,
je viens d'utiliser votre méthode.
Elle marche bien.
Mais maintenant, je souhiate qu'Excel fasse la différence entre une cellule encadrée (xlmedium) en noir et un cellule encardrée en Rouge (Xl medium).
Voici mon code, PB Excel ne fait pas la différence (où est mon erreur).
Sub CompteurCouleurs_CompteurBordures()
'********** DECLARATION DES VARAIBLES **********.
Dim Cpt9 As Long
Dim Cpt10 As Long
Dim Feedback1 As Boolean
Dim Feedback2 As Boolean
Dim I As Long
Dim J As Long
'********** INITIALISATION DES VARIABLES **********.
Cpt9 = 0
Cpt10 = 0
Feedback1 = False
Feedback2 = False
For I = 1 To 30
For J = 1 To 30
Cells(I, J).Select
With Selection
'********** CELLULE ENCADREE NOIRE **********.
If (.Borders(xlEdgeTop).LineStyle = xlContinuous And (.Borders(xlEdgeTop).Weight = xlMedium)) Then
Feedback1 = True
Else
Feedback1 = False
End If
If (.Borders(xlEdgeRight).LineStyle = xlContinuous And Feedback1 And (.Borders(xlEdgeRight).Weight = xlMedium)) Then
Feedback1 = True
Else
Feedback1 = False
End If
If (.Borders(xlEdgeBottom).LineStyle = xlContinuous And Feedback1 And (.Borders(xlEdgeBottom).Weight = xlMedium)) Then
Feedback1 = True
Else
Feedback1 = False
End If
If (.Borders(xlEdgeLeft).LineStyle = xlContinuous And Feedback1 And (.Borders(xlEdgeLeft).Weight = xlMedium)) Then
Feedback1 = True
Else
Feedback1 = False
End If
If (Feedback1) Then
Cpt9 = Cpt9 + 1
End If
'********** CELLULE ENCADREE ROUGE **********.
If (.Borders(xlEdgeTop).LineStyle = xlContinuous And (.Borders(xlEdgeTop).Weight = xlMedium) And (.Borders(xlEdgeTop).Color = 255)) Then
Feedback2 = True
Else
Feedback2 = False
End If
If (.Borders(xlEdgeRight).LineStyle = xlContinuous And (.Borders(xlEdgeRight).Weight = xlMedium) And Feedback2 And (.Borders(xlEdgeRight).Color = 255)) Then
Feedback2 = True
Else
Feedback2 = False
End If
If (.Borders(xlEdgeBottom).LineStyle = xlContinuous And (.Borders(xlEdgeBottom).Weight = xlMedium) And Feedback2 And (.Borders(xlEdgeBottom).Color = 255)) Then
Feedback2 = True
Else
Feedback2 = False
End If
If (.Borders(xlEdgeLeft).LineStyle = xlContinuous And (.Borders(xlEdgeLeft).Weight = xlMedium) And Feedback2 And (.Borders(xlEdgeLeft).Color = 255)) Then
Feedback2 = True
Else
Feedback2 = False
End If
If (Feedback2) Then
Cpt10 = Cpt10 + 1
End If
end with
Next J
Next I
End sub
je viens d'utiliser votre méthode.
Elle marche bien.
Mais maintenant, je souhiate qu'Excel fasse la différence entre une cellule encadrée (xlmedium) en noir et un cellule encardrée en Rouge (Xl medium).
Voici mon code, PB Excel ne fait pas la différence (où est mon erreur).
Sub CompteurCouleurs_CompteurBordures()
'********** DECLARATION DES VARAIBLES **********.
Dim Cpt9 As Long
Dim Cpt10 As Long
Dim Feedback1 As Boolean
Dim Feedback2 As Boolean
Dim I As Long
Dim J As Long
'********** INITIALISATION DES VARIABLES **********.
Cpt9 = 0
Cpt10 = 0
Feedback1 = False
Feedback2 = False
For I = 1 To 30
For J = 1 To 30
Cells(I, J).Select
With Selection
'********** CELLULE ENCADREE NOIRE **********.
If (.Borders(xlEdgeTop).LineStyle = xlContinuous And (.Borders(xlEdgeTop).Weight = xlMedium)) Then
Feedback1 = True
Else
Feedback1 = False
End If
If (.Borders(xlEdgeRight).LineStyle = xlContinuous And Feedback1 And (.Borders(xlEdgeRight).Weight = xlMedium)) Then
Feedback1 = True
Else
Feedback1 = False
End If
If (.Borders(xlEdgeBottom).LineStyle = xlContinuous And Feedback1 And (.Borders(xlEdgeBottom).Weight = xlMedium)) Then
Feedback1 = True
Else
Feedback1 = False
End If
If (.Borders(xlEdgeLeft).LineStyle = xlContinuous And Feedback1 And (.Borders(xlEdgeLeft).Weight = xlMedium)) Then
Feedback1 = True
Else
Feedback1 = False
End If
If (Feedback1) Then
Cpt9 = Cpt9 + 1
End If
'********** CELLULE ENCADREE ROUGE **********.
If (.Borders(xlEdgeTop).LineStyle = xlContinuous And (.Borders(xlEdgeTop).Weight = xlMedium) And (.Borders(xlEdgeTop).Color = 255)) Then
Feedback2 = True
Else
Feedback2 = False
End If
If (.Borders(xlEdgeRight).LineStyle = xlContinuous And (.Borders(xlEdgeRight).Weight = xlMedium) And Feedback2 And (.Borders(xlEdgeRight).Color = 255)) Then
Feedback2 = True
Else
Feedback2 = False
End If
If (.Borders(xlEdgeBottom).LineStyle = xlContinuous And (.Borders(xlEdgeBottom).Weight = xlMedium) And Feedback2 And (.Borders(xlEdgeBottom).Color = 255)) Then
Feedback2 = True
Else
Feedback2 = False
End If
If (.Borders(xlEdgeLeft).LineStyle = xlContinuous And (.Borders(xlEdgeLeft).Weight = xlMedium) And Feedback2 And (.Borders(xlEdgeLeft).Color = 255)) Then
Feedback2 = True
Else
Feedback2 = False
End If
If (Feedback2) Then
Cpt10 = Cpt10 + 1
End If
end with
Next J
Next I
End sub
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
7 févr. 2011 à 12:12
7 févr. 2011 à 12:12
Hummmm, bien long tout ça, que pense tu de mon poste ?