Boucle sur une plage de donnees s'arrete apres condition rempli
wuhrlinanthony
Messages postés
52
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Désolé pour le titre, ce n'est pas clair car j'ai du mal à expliquer ce que je veux faire.
Je vais essayer de détailler un maximum :
J'ai une liste de plus ou moins 1000 cellules rempli par des chiffres. Je voudrais créer une boucle qui vérifie la première et la dernière cellule sur une plage de 46 cellules. Si la première et la dernière cellule égale 0 alors l'action me surligne la plage de 46 cellules en jaune et la boucle s'arrête. Si non elle continu a tourné.
Et si la boucle ne trouve pas une plage de 46 cellules commençant et finissant par 0, alors la boucle recommence mais avec une plage de 92 cellules (46*2), etc...
Voici mon fichier Excel avec une macro que j'ai essayé mais je ne suis vraiment pas sur :
https://www.cjoint.com/c/FFudxUsFIUz
S'il vous plait, si quelqu'un peut m'aider sur mon fichier et m'expliquer ce qu'il a fait (Pour apprendre en même temps :) ) , ce sera vraiment génial.
Merci beaucoup.
Désolé pour le titre, ce n'est pas clair car j'ai du mal à expliquer ce que je veux faire.
Je vais essayer de détailler un maximum :
J'ai une liste de plus ou moins 1000 cellules rempli par des chiffres. Je voudrais créer une boucle qui vérifie la première et la dernière cellule sur une plage de 46 cellules. Si la première et la dernière cellule égale 0 alors l'action me surligne la plage de 46 cellules en jaune et la boucle s'arrête. Si non elle continu a tourné.
Et si la boucle ne trouve pas une plage de 46 cellules commençant et finissant par 0, alors la boucle recommence mais avec une plage de 92 cellules (46*2), etc...
Voici mon fichier Excel avec une macro que j'ai essayé mais je ne suis vraiment pas sur :
https://www.cjoint.com/c/FFudxUsFIUz
S'il vous plait, si quelqu'un peut m'aider sur mon fichier et m'expliquer ce qu'il a fait (Pour apprendre en même temps :) ) , ce sera vraiment génial.
Merci beaucoup.
A voir également:
- Boucle sur une plage de donnees s'arrete apres condition rempli
- Fuite données maif - Guide
- Excel cellule couleur si condition texte - Guide
- Document rempli - Guide
- Effacer les données de navigation sur android - Guide
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image d’ours polaire sur une image de plage. retrouvez l'image originale de la plage. que cache l'ours polaire ? - Forum Graphisme
1 réponse
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
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.
Fais-en un complet, après tu passes au suivant.
Quand tu mets un code indente-le et utilise la balise code (icone <>)
eric
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
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.