Boucle si cellule <>""

F

Fabien

Guest
Bonjour le forum
Et merci à ceux qui m'ont déjà aidé pour le select case
cette fois je viens vous voir pour tenter d'effectuer une boucle sur une plage de cellules nommées (PlageA), si elle rencontre un texte quelconque.
j'ai essayé :

Sub AppliqueCouleur()
Const Limit As Integer = 0
For Each c In Range('PlageA')
If c.Value > Limit Then
c.Interior.ColorIndex = 26
End If
Next c
End Sub

En vous remerciant beaucoup
 

ljoue

XLDnaute Junior
Salut essaye peut etre avec While - Wend :

Sub AppliqueCouleur()

Dim i as integer
For i = 1 to 500 '(nombre de ligne début et Fin de 'PlageA')
While cells(i,2) > Limit (Numéro de colonne)
Range(Cells(i,1) , cells(i,5)).Select
Selection.Interior.ColorIndex = 1
Wend
Next i

End Sub


A+
 
F

Fabien

Guest
Mauvaise explication au départ de ma part, je test si cellule <> de ''

Sub Plage()
Const Limit As Integer = 0
For Each c In Range('Plage17')
If c.Value <> '' Then
c.Interior.ColorIndex = 26
End If
Next c
End Sub

Cette macro tourne mais ne détecte pas le texte
Mauci Dg62
 

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

Fabien, que veux-tu dire lorsque tu ecrit : 'Cette macro tourne mais ne détecte pas le texte '

qu'elle type d'informations as-tu dans ces cellules ?

Le code de didier(salut) devrait fonctionner.

Sinon, tu as 432 plages, et tu veux boucler sur toutes ?

alors ce code devrais-te convenir :

Sub Bouton1_QuandClic()
Dim nom As Name
Dim c As Range

For Each nom In ThisWorkbook.Names
&nbsp; &nbsp;
For Each c In nom.RefersToRange
&nbsp; &nbsp; &nbsp; &nbsp;
If c <> '' Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.Interior.ColorIndex = 26
&nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp;
Next c
Next nom

End Sub

Sinon, merci de nous précisez ce que tu entend par 'simplifier'.

salut
 
F

Fabien

Guest
Bonjour Hervé, le forum,
Voici, grace à votre aide, j'ai réussi cette macro :

Sub Public_SélectionJourActif()
Select Case Range('B1')
Case Range('B6'): Call Plage01
Case Range('C6'): Call Plage02
Case Range('D6'): Call Plage03
Case Range('E6'): Call Plage04
Case Range('F6'): Call Plage05
Case Range('G6'): Call Plage06
Case Range('H6'): Call Plage07
Case Range('B22'): Call Plage08
Case Range('C22'): Call Plage09
Case Range('D22'): Call Plage10
Case Range('E22'): Call Plage11
Case Range('F22'): Call Plage12
Case Range('G22'): Call Plage13
Case Range('H22'): Call Plage14 'Etc...
Case Else: Exit Sub
End Select
End Sub

Puis je cherche à détecter les cellules non vides de la plage nommée sélection grace à la macro ci-dessus

Sub Plage01()
Exit Sub
Const Limit As Integer = 0
For Each c In Range('Plage01')
If c.Value <> '' Then
c.Interior.ColorIndex = 26
End If
Next c
End Sub
Sub Plage02()
Exit Sub
Const Limit As Integer = 0
For Each c In Range('Plage02')
If c.Value <> '' Then
c.Interior.ColorIndex = 26
End If
Next c
End Sub
Sub Plage03()
Exit Sub
Const Limit As Integer = 0
For Each c In Range('Plage03')
If c.Value <> '' Then
c.Interior.ColorIndex = 26
End If
Next c
End Sub 'Etc...

Or, si l'appel de la macro ''Plagex'' s'effectue bien, elle ne m'indique pas la ou les cellules différentes de ''

Je ne sais si je me fais bien comprendre, car je débute et je veux avant tout comprendre et ce que je fais et vos renseignements
Je vous en remercie bien fort
Fab
 

Hervé

XLDnaute Barbatruc
re

dois-je comprendre que tu as 432 cases dans ton select, et ensuite 432 macros sub plage...() ?

Waouh

si oui, on peut déjà supprimer les 432 macros pour n'en faire qu'une.

ensuite il faudrait que tu nous dises à quelle cellule tes plages correspondent ? exemple :

ma plage01=cellule(b10:b20)
ma plage02=cellule(c10:c20)
etc...

afin que l'on puisse voir si une simplification n'est pas possible.

quant à ton souci de <> '' il faudrait nous dire ce que tu as dans tes cellules, car vraiment là je vois pas pourquoi le code de l'ami didier ne fonctionne pas.

A tout hasard remplace c.value par c.text

a plus

salut
 
F

Fabien

Guest
Voici

Plage01 : B6:B19 - Plage02 : C6:C19 - Plage03 : D6:D19 - Plage04 : E3:E19 - Plage05 : F6:F19 - Plage06 : G6:G19 - Plage07 : H6:H19
Puis Plage 22 à 35
38 à 51
54 à 67
70 à 83
86 à 99
Toujours les même plages sur 12 feuilles

Merci à toi
 

dg62

XLDnaute Barbatruc
Re:Boucle si cellule <>\"\"

re


a priori, tu peux déjà simplifier tes plages.


b6:f19 peut faire 1 plage ce qui permet de réduire à 6 plages /feuille.

donc 72 plages pour le classeur



tu peux même regrouper tes plages non contigues en 1 seule.

Message édité par: dg62, à: 12/10/2005 18:21
 

Hervé

XLDnaute Barbatruc
re tout le monde

Je suis partie sur tout à fait autre chose, en oubliant le système de plage.

des lignes 6 à 86 , tu as toujours un intervalle de 16 lignes sauf la derniere qui se trouve en ligne 99, et donc un intervalle de seulement 13 lignes.

est ce une erreur ?

la macro tient compte de ceci.

j'ai aussi considérer que tu n'avais que les douzes feuilles dans ton classeur, il faudra surement adapter.

enfin, j'ai aussi pris l'initiative que tu voulais comparer la cellule B1 de Chaque feuilles avec tes plages, là aussi à voir.

Sub Bouton1_QuandClic()
Dim ws As Worksheet
Dim colonne As Byte
Dim ligne As Byte
Dim j As Byte

For Each ws In Worksheets
&nbsp; &nbsp;
With ws
&nbsp; &nbsp; &nbsp; &nbsp;
For ligne = 6 To 102 Step 16
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If ligne = 102 Then ligne = 99
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
For colonne = 2 To 7
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If .Range('b1') = .Cells(ligne, colonne) Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
For j = ligne To ligne + 13
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
If .Cells(j, colonne) <> '' Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Cells(j, colonne).Interior.ColorIndex = 26
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Next j
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Next colonne
&nbsp; &nbsp; &nbsp; &nbsp;
Next ligne
&nbsp; &nbsp;
End With
Next ws
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End Sub


salut
 

Discussions similaires

Réponses
29
Affichages
966

Statistiques des forums

Discussions
312 339
Messages
2 087 400
Membres
103 537
dernier inscrit
alisafred974