Sélection en VBA

Résolu
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -  
CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à toutes et à tous,

Et oui je continue à m'interesser au langage VBA,
j'ai même acheté un livre.

je recherche également des codes sur internet.

La seule difficulté c'est d'appliquer les codes.

par exemple j'ai trouvé les 3 codes suivants afin d'obtenir la somme des chiffres rouges ou des cellules jaunes.
Sur une feuille ça fonctionne, par contre j'ai des difficultés dès que
j'essaie de sélectionner le classeur composé d'un nombre variable de feuilles.

voici les 3 codes que j'ai trouvés:

Calcule la somme des cellules D2 de toutes les feuilles

Sub CalculSum()
Application.ScreenUpdating = False
For Each feuille In ActiveWorkbook.Sheets
feuille.Activate
tot = [D2]
result = result + tot
Next
MsgBox result
End Sub

Fait la somme des chiffres écrits en rouge de la sélection

Sub sommeCouleurRougeText()
Dim Cellule As Range
Dim total As Variant
For Each Cellule In Selection
If Cellule.Font.ColorIndex = 3 Then

'3 rouge et 1 pour le noir

'If Cellule.Interior.ColorIndex = 3 Then (pour la couleur de fond)

If IsNumeric(Cellule) Then total = total + Cellule.Value
End If
Next
MsgBox total
Range("G12") = total
End Sub

Compte le nombre de cellules colorées en rouge de la sélection

Sub NombredeCellRouge()
Dim Cellule As Range
Dim total As Variant
For Each Cellule In Selection
If Cellule.Interior.ColorIndex = 3 Then 'rouge
total = total + Cellule.Count
End If
Next
MsgBox "Il y a " & total & " Cellules rouges"
Range("A1") = total
End Sub

merci à vous

à plus

David

2 réponses

  1. Info
     
    Bonjour,

    Non testé ! :

    Option Explicit
    
    Sub CalculSum()
    
        Dim Result As Long, Total As Variant
    
        Application.ScreenUpdating = False
    
        For Each feuille In ActiveWorkbook.Sheets
            feuille.Activate
            tot = [D2]
            Result = Result + tot
            
            ' ->>>>> Définir la sélection
            Range("A2:C5").Select
            
            ' Ajout appel de fonction
            Total = SommeCouleurRougeText(Selection)
            Range("G12").Value = Total
            
            Total = NombredeCellRouge(Selection)
            MsgBox "Il y a " & Total & " Cellules rouges"
            Range("A1").Value = Total
        
        Next
        
        MsgBox Result
        
    End Sub
    '
    
    'Fait la somme des chiffres écrits en rouge de la sélection
    
    Function SommeCouleurRougeText(ByVal Cible As Range) As Variant
    
        Dim Cellule As Range
        Dim Total As Variant
        
        For Each Cellule In Cible
            '3 rouge et 1 pour le noir
            If Cellule.Font.ColorIndex = 3 Then
                If IsNumeric(Cellule) Then Total = Total + Cellule.Value
            End If
        Next
    
        SommeCouleurRougeText = Total
        
    End Function
    '
    
    'Compte le nombre de cellules colorées en rouge de la sélection
    
    Function NombredeCellRouge(ByVal Cible As Range) As Variant
    
        Dim Cellule As Range
        Dim Total As Variant
    
        For Each Cellule In Cible
            If Cellule.Interior.ColorIndex = 3 Then 'rouge
                Total = Total + Cellule.Count
            End If
        Next
    
        NombredeCellRouge = Total
        
    End Function
    '
    


    Info
    0
  2. CHARLYJACK Messages postés 345 Date d'inscription   Statut Membre Dernière intervention   1
     
    Merci du coup de main,
    Mais J'ai essayé ça ne marche pas !
    je n'arrive pas à exécuter les code
    sans avoir un message d'erreur
    0