Boucle sur une plage de donnees s'arrete apres condition rempli
Fermé
wuhrlinanthony
Messages postés
52
Date d'inscription
mercredi 29 juillet 2015
Statut
Membre
Dernière intervention
5 juillet 2017
-
20 juin 2016 à 05:26
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 20 juin 2016 à 11:31
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 20 juin 2016 à 11:31
A voir également:
- Boucle sur une plage de donnees s'arrete apres condition rempli
- Excel cellule couleur si condition texte - Guide
- Image de manchots sur une image de plage - Forum Musique / Radio / Clip
- Excel reporter des données sur une autre feuille avec conditions - Forum Excel
- Reinstaller windows sans perte de données - Guide
- My launcher s'arrête systématiquement ✓ - Forum Téléphones & tablettes Android
1 réponse
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
20 juin 2016 à 07:47
20 juin 2016 à 07:47
Bonjour,
Faire F1 sur les fonctions que tu ne connais pas.
eric
Sub color() Dim adr1 As String, c As Range Set c = [B6:B1006].Find(0, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then adr1 = c.Address Do If c.Offset(46) = 0 And c.Offset(46) <> "" Then c.Resize(46).Interior.ColorIndex = 6 Exit Do End If Set c = Cells.FindNext(c) Loop While c.Address <> adr1 'And Not c Is Nothing End If End Sub
Faire F1 sur les fonctions que tu ne connais pas.
eric
20 juin 2016 à 10:23
J'ai essayer "d'agrandir" le code en ajoutant deux autres colonnes :
Sub color()
Dim adr1 As String, bvh As Range, emp As Range, phev As Range
Dim adr2 As String
Dim adr3 As String
Set bvh = [O7:O1006].Find(0, LookIn:=xlValues, lookat:=xlWhole)
Set emp = [P7:P1006].Find(0, LookIn:=xlValues, lookat:=xlWhole)
Set phev = [Q7:Q1006].Find(0, LookIn:=xlValues, lookat:=xlWhole)
If Not bvh Is Nothing Then
adr1 = bvh.Address
adr2 = emp.Address
adr3 = phev.Address
Do
If bvh.Offset(46) = 0 And bvh.Offset(46) <> "" And emp.Offset(46) = 0 And emp.Offset(46) <> "" And phev.Offset(46) = 0 And phev.Offset(46) <> "" Then
bvh.Resize(46).Interior.ColorIndex = 6
emp.Resize(46).Interior.ColorIndex = 6
phev.Resize(46).Interior.ColorIndex = 6
Exit Do
End If
Set bvh = Cells.FindNext(bvh)
Set emp = Cells.FindNext(emp)
Set phev = Cells.FindNext(phev)
Loop While bvh.Address <> adr1 And emp.Address <> adr2 And phev.Address <> adr3 'And Not bvh Is Nothing
End If
End Sub
Je sais, c'est assez simpliste comme ajout, je pense qu'il y a mieux :) . Je suis debutant donc je cherche a faire simple.
Ce qui est bizarre c'est qu'au lieu de me surligner les colonnes O P et Q , le code me surligne les colones R S et T.
Tu sais pourquoi ?
Merci pour ton aide.
20 juin 2016 à 10:34
Fais-en un complet, après tu passes au suivant.
Quand tu mets un code indente-le et utilise la balise code (icone <>)
eric
20 juin 2016 à 10:50
Je peux toujours le faire par la suite ou dois-je les integrer au code que tu as fait ?
Une boucle avec les conditions :
premiere et derniere cellule de la plage (46) de la colonne O = 0
+ premiere et derniere cellule de la plage (46) de la colonne P = 0
+ premiere et derniere cellule de la plage (46) de la colonne Q = 0
Si c'est 6 conditions sont respecter, alors le code surligne en couleur la plage de 46 cellules des 3 colonnes.
C'est un peu chiant, c'est pour ca que je ne vois pas tres clair sur ce code.
anthony
20 juin 2016 à 11:31
n'est plus suffisant. Complète-le avec tes conditions supplémentaires.
Regarde l'aide sur Offset. La syntaxe complète est Offset(ligne, colonne)
Ex : .Offset(0,1) te donne le range même ligne, 1 colonne à droite.