Excel macro: condition sur plusieurs cellules

Résolu
jossdi Messages postés 22 Date d'inscription   Statut Membre -  
jossdi Messages postés 22 Date d'inscription   Statut Membre -
Bonjour,
je cherche à mettre une condition sur plusieurs cellules, la voici:
Si les cellules de B20à B24 de la feuille1 sont toutes vides alors la cellules A5 de la feuille2
est jaune.
voici mon code

Sub macro1()
For i = 20 To 24
Sheets("feuille1").Activate
If Cells(i, 2).Interior.ColorIndex = -4142 Then
Sheets("feuille2").Activate
Cells(5,1).interior.colorindex = 6
end if
next
end sub

la macro ne fait pas exactement ce que je veux:
il suffit qu'une des cellule soit vide pour A5 devienne jaune alors qu'il faut quelles soient toutes
vides pour que A5 deviennent jaune.
Merci d'avance je rame un peu je dois l'avouer!!
Configuration: Windows XP
Firefox 2.0.0.16

5 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    bonjour,
    Sans avoir approfondi...
    If Cells(i, 2).Interior.ColorIndex = -4142 Then
    si la veleur est réellement à -4142 tu doit employé Color et pas colorIndex
    ColorIndex c'est de 1 à 48 et sûrement pas du négatif, là tu a déjà une erreur.
    Ensuite tu ne teste qu'une seule cellule à la fois

    Voir
    dim F as boolean
    Sheets("feuille1").Activate

    For i = 20 To 24
    If Cells(i, 2) <> "" then F = True: exit for
    next i
    if not F then
    Sheets("feuille2").Activate
    Cells(5,1).interior.colorindex = 6
    end if

    A+
    -1
    1. jossdi Messages postés 22 Date d'inscription   Statut Membre
       
      merci ça marche.
      a+
      -1
    2. jossdi Messages postés 22 Date d'inscription   Statut Membre
       
      bonjour,
      je me suis trompé j'ai encore le même problème ça teste une cellule à la fois.
      voici le code complet peut être ai je oublié un code:

      Sub technologydetailfinish()

      Dim F As Boolean
      Sheets("TECHNOLOGY DETAIL").Activate

      For i = 20 To 24
      If Cells(i, 2) <> "" Then F = True: Exit For
      Next i
      If Not F Then
      Sheets("STACK UP").Activate
      Cells(9, 38).Interior.Color = 10092543
      Cells(10, 38).Interior.Color = 10092543
      Cells(10, 47).Interior.Color = 10092543
      Cells(9, 38).Value = ""
      Cells(10, 38).Value = ""
      Cells(10, 47) = ""
      Cells(12, 38).Interior.Color = 10092543
      Cells(13, 38).Interior.Color = 10092543
      Cells(13, 47).Interior.Color = 10092543
      Cells(12, 38).Value = ""
      Cells(13, 38).Value = ""
      Cells(13, 47) = ""
      Cells(49, 38).Interior.Color = 10092543
      Cells(50, 38).Interior.Color = 10092543
      Cells(50, 47).Interior.Color = 10092543
      Cells(49, 38).Value = ""
      Cells(50, 38).Value = ""
      Cells(50, 47) = ""
      Cells(52, 38).Interior.Color = 10092543
      Cells(53, 38).Interior.Color = 10092543
      Cells(53, 47).Interior.Color = 10092543
      Cells(52, 38).Value = ""
      Cells(53, 38).Value = ""
      Cells(53, 47) = ""
      Cells(11, 19).Interior.ColorIndex = 2
      Cells(51, 19).Interior.ColorIndex = 2

      End If

      End Sub

      tanks for advance
      -1
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    For i = 20 To 24 
    If Cells(i, 2) <> "" Then F = True: Exit For 
    Next i 

    Avec cette configuration tu teste les cellules B20, B21, B22, B23 et B24, c'est bien ces cellules que tu veux tester ?
    Quand tu dit qu'il ne teste qu'une seule cellule c'est pas possible sauf que dés qu'il y a une cellule non vide il sort de la boucle mais F est à True donc le if ne se fait opas.
    Tu dit... parce que ca devrais fonctionner.
    -1
    1. jossdi Messages postés 22 Date d'inscription   Statut Membre
       
      non ça ne fonctionne pas super
      il suffit qu'une des cellules soit vide pour que la macro s'exécute alors que je voudrais qu'elle ne s'exécute que si toutes les cellules sont vides.
      -1
    2. jossdi Messages postés 22 Date d'inscription   Statut Membre
       
      en faisant quelques tests je pense avoir trouver l'erreur.
      ton code marche très bien mais dans le cas de cellule vide (sans écriture)
      alors que moi je voudrais que ce soit dans le cas de cellule vide (couleur de fond transparente)
      que faudrait il changer dans le code pour parler de fond de cellule et non d'éventuelle écriture.
      -1
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Y a un noeud, si ton fichier est pas trop coinfidentiel met le sur Cijoint et donne le lien dans un poste suivant.
    -1
  4. jossdi Messages postés 22 Date d'inscription   Statut Membre
     
    c où le "Cijoint"
    -1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    changer la ligne
    If Cells(i, 2) <> "" Then F = True: Exit For
    par
    If Cells(i, 2)).Interior.ColorIndex <> xlNone Then F = True: Exit For
    -1
    1. jossdi Messages postés 22 Date d'inscription   Statut Membre
       
      ok ça marche parfaitement merci beaucoup!
      excuse pour la réponse tardive le w-e c'est sacré lol
      a+
      -1