Problème VBA

Résolu
funbreizhou Messages postés 89 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

J'ai un petit soucis sur Excel. J'aimerais coder en VBA quelque chose qui ressemblerait à ca :
- Sélectionner une plage définie de cellules (jusque là ça va)
- Dans une autre celllule afficher la somme des valeurs des cellules uniquement colorées en vert, de cette plage.

Merci de votre aide !

3 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour
    quelque chose comme ça, le code est ici affecte a un bouton (pas obligatoire) et affichage du resultat en E7

    Private Sub CommandButton1_Click()  
    Dim s As Long  ' modifier si pas entier  
    Dim c As Range  
    s = 0  
    For Each c In Selection  
      If c.Interior.ColorIndex = 4 Then  ' si c'est le bon vert   
        s = s + c.Value  
      End If  
    Next c  
    Range("E7").Value = s  
    End Sub 


    bonne suite
    0
  2. funbreizhou Messages postés 89 Statut Membre 11
     
    Yes, ça marche nikel ! je te remercie.

    Par contre pour en comprendre le raisonnement :

    Dim s As Long ' modifier si pas entier
    Dim c As Range

    Je ne comprends pas le principie, en quoi consiste ces deux lignes ?

    Mercie encore.

    Thibault
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re
    dim permet de declarer les variables utilisées dans la procedure
    cette declaration, bien que non obligatoire en VBA est TRES fortement recommandée.
    Pour eviter d'oublier de declarer les variables, on met dans l'en tete du module la declaration : option explicit.
    Avec cette declaration, si tu oublies de declarer une variable, le compilateur t'affichera un message d'erreur . Cette declaration pemret entre autres de detecter les fautes de frappe (pour un nom de variable) et les erreurs qui en decoulent
    dim s as long , declare la variable s comme un entier long (de -2 147 483 648 à 2 147 483 647) , si tes valeurs etaient decimales (3.14 par exemple), il aurait fallu declarer s comme single ou bien double
    dim c as range, declare la variable c comme une cellule (ou une plage)
    bonne suite
    0