Excel macro: condition sur plusieurs cellules
Résolu/Fermé
jossdi
Messages postés
22
Date d'inscription
mercredi 9 juillet 2008
Statut
Membre
Dernière intervention
21 juillet 2008
-
17 juil. 2008 à 17:22
jossdi Messages postés 22 Date d'inscription mercredi 9 juillet 2008 Statut Membre Dernière intervention 21 juillet 2008 - 21 juil. 2008 à 10:36
jossdi Messages postés 22 Date d'inscription mercredi 9 juillet 2008 Statut Membre Dernière intervention 21 juillet 2008 - 21 juil. 2008 à 10:36
A voir également:
- Excel macro: condition sur plusieurs cellules
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
5 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
17 juil. 2008 à 17:38
17 juil. 2008 à 17:38
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+
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+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 juil. 2008 à 11:32
18 juil. 2008 à 11:32
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.
jossdi
Messages postés
22
Date d'inscription
mercredi 9 juillet 2008
Statut
Membre
Dernière intervention
21 juillet 2008
18 juil. 2008 à 14:30
18 juil. 2008 à 14:30
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.
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.
jossdi
Messages postés
22
Date d'inscription
mercredi 9 juillet 2008
Statut
Membre
Dernière intervention
21 juillet 2008
18 juil. 2008 à 14:36
18 juil. 2008 à 14:36
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.
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.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 juil. 2008 à 16:20
18 juil. 2008 à 16:20
Y a un noeud, si ton fichier est pas trop coinfidentiel met le sur Cijoint et donne le lien dans un poste suivant.
jossdi
Messages postés
22
Date d'inscription
mercredi 9 juillet 2008
Statut
Membre
Dernière intervention
21 juillet 2008
18 juil. 2008 à 16:35
18 juil. 2008 à 16:35
c où le "Cijoint"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
19 juil. 2008 à 02:50
19 juil. 2008 à 02:50
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
If Cells(i, 2) <> "" Then F = True: Exit For
par
If Cells(i, 2)).Interior.ColorIndex <> xlNone Then F = True: Exit For
jossdi
Messages postés
22
Date d'inscription
mercredi 9 juillet 2008
Statut
Membre
Dernière intervention
21 juillet 2008
21 juil. 2008 à 10:36
21 juil. 2008 à 10:36
ok ça marche parfaitement merci beaucoup!
excuse pour la réponse tardive le w-e c'est sacré lol
a+
excuse pour la réponse tardive le w-e c'est sacré lol
a+
17 juil. 2008 à 18:39
a+
18 juil. 2008 à 11:16
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