Boucle

chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 - 5 févr. 2011 à 14:49
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 - 6 févr. 2011 à 23:17
Bonjour
je suis sur excel2007.
je cherche dans un tableau la couleur d'une cellule, si elle est jaune alors j'attribue une valeur, ci dessous

If Range("C9").Interior.Color 65535 Then Range("B9") 0.25
If Range("K9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25
If Range("R9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25
If Range("Y9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25

et je souhaiterais une boucle qui recherche la ligne en dessous, et cela sur 70 lignes

je ne sais pas faire des boucle, si quelqu'un peux m'aiguiller, j'en serais ravi.
merci a vous.

23 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
5 févr. 2011 à 15:15
Bonjour,

Instructions For/Next

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
5 févr. 2011 à 18:07
bonjour henry
peux tu me montrez un exemple, car sur les boucles je seche.
Tu m'as deja depanner il y a quelques mois.
je t'en remercie encore
christian
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
5 févr. 2011 à 18:17
Bonjour,

Dim i as Long
For i=0 to 69
If Cells(i+9,3).Offset(i,0).Interior.Color 65535 Then Cells(i+9,2) 0.25
If Cells(9+i,11).Interior.Color 65535 Then Cells(i+9,2) Cells(i+9,2) + 0.25
If cells(i+9,18).Interior.Color 65535 Then Cells(i+9,2) Cells(i+9,2) + 0.25
If Cells(9+i,25).Interior.Color 65535 Then Cells(i+9,2) Cells(i+9,2) + 0.25 
Next i


J'ai remplacé les Range pas Cells, c'est un peu mieux, Sinon, tu as aussi Offset :
Range("...").Offset(ligne,cols).*

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
5 févr. 2011 à 18:35
merci j'ai essayer le code, cela marche bien sur la premiere ligne, mais ca ne va pas sur les autres, peux tu me dire comment je peux te joindre la feuille excel, pour que tu puisse mieux voir, car il n'est pas toujours facile d'exprimer son besoin.
je n'est jamais attache de fichier.
merci pour ta reactivite
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
5 févr. 2011 à 19:09
Bonjour,

Quand tu dis "cela marche bien sur la première ligne, mais ca ne va pas sur les autres", tu veux dire que ça ne fait que les 70 premières lignes, mais pas au-delà ?
Si oui, c'est normal vu le code.
Pour faire une longueur variable, il faut savoir sur quels critères tu considère le tableau terminé.

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
5 févr. 2011 à 19:13
je peux t'envoyez ma feuille sur le mail qu'il y a sur ton site, si tu veux
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
5 févr. 2011 à 19:24
Bonjour,

Dans la mesure du possible, je préfère éviter l'échange de fichier.
Comme tu n'as pas répondu à la question que j'avais posé : Est-ce que seules les lignes de 9 à 78 sont impactées, si oui, c'est normal.

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
5 févr. 2011 à 19:42
ok je te comprend, sur la premiere ligne cela marche.

Je t'explique ce que je fait
j'ai une feuille ou il y a un calendrier, sur cette page il y a le mois de janvier.
cela va du 1 au 31 ici normal
donc quand je choisi la premiere semaine du samedi au samedi je la met en jaune.
donc je souhaite dans la cellule C9 avoir 25%
quand je choisi la 2 semaines C9 25%, quand je choisi les 2 semaines C9 50%
quand je choisi le mois complet C9 = 100%

et cela sur les 65 lignes suivantes:
j'espere avoir ete clair, car il n'est pas facile d'exprimer son besoin face a une personne qui domine bien le sujet. ce qui est evident je pense pour toi ne l'est pas pour les novices, mais c'est avec les precieux renseignements que les personnes comme toi nous donnent que l'on progresse.
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
6 févr. 2011 à 13:36
Bonjour henry
j'ai essayer le code il fonctionne bien sur la premiere ligne, mais a priori il s'arrete la quand je choise la ligne en dessous et que je choisi une zone rien ne s'affiche dans la colonne de gauche.
il y a quelque chose qui bloque, je ne sais quoi.
merci de tes reponse
christian
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 févr. 2011 à 15:14
Bonjour,

Quand tu dis "la première ligne" tu parles de la ligne 9 ?
Ensuite, as-tu regarder les valeurs et le déroulement en pas à pas ?

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
6 févr. 2011 à 15:28
Bonjour henry
voici ma macro, elle se trouve sous un userform, dans ma feuille je selectionne une zone, puis je clique sur mon bouton, il m'ouvre mon userform, qui me demande un nom, que je renseigne puis je valide. la macro se deroule car j'ai bien la zone selectionnee en jaune puis le nom a l'enterieure de cette zone que j'ai fusionnee. Quand je me deplace sur la cellule C10 et que je choisi une autre zone, et lance la macro de nouveau , aucune valeur ne s'affiche dans la cellule precedente c'est a dire en B10.
voila , j'espere que j'ai reussi a m'expliquer.
merci
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 févr. 2011 à 16:50
Bonjour,

Le fait que les cellules soit sélectionnées n'inclu pas forcément que le code que je t'ai passé soit utilisé/fonctionnel.
Essayes de vérifier en pas à pas.

De ce que j'ai compris, c'est tu voulais que ce code passe de lignes en ligne similaire à :
If Range("C9").Interior.Color 65535 Then Range("B9") 0.25
If Range("K9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25
If Range("R9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25
If Range("Y9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25 

If Range("C10").Interior.Color 65535 Then Range("B10") 0.25
If Range("K10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25
If Range("R10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25
If Range("Y10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25 

If Range("C11").Interior.Color 65535 Then Range("B11") 0.25
If Range("K11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25
If Range("R11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25
If Range("Y11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25 


J'ai l'impression que tu n'est soit pas claire dans la question ou que ta demande est nettement plus complexe.
Je n'ai pas Office 2007 chez moi, Mais si tu as une saisie d'écran, ça peut aider à comprendre.

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
6 févr. 2011 à 17:00
je veux bien t'envoyer une copie d'ecran mais je ne trouve pas l'endroit ou la mettre sur le forum.
Par compte, la macro que tu developpe, est bien mais je pensai que cela serait plus court, car ici on ecris pour chaque ligne, donc 65 fois les quatres lignes.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 févr. 2011 à 17:10
Bonjour,

Pour héberger une image, il y a un paquet de site qui le permet, ensuite, tu poste le lien que te donne le site.

Concernant le code de mon dernier message, il contenait un équivalent déplié du code, la boucle fournie en page 1 est évidemment plus concise.

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
6 févr. 2011 à 17:35
Voici la capture d'ecran.

["http://www.hebergementimages.com/image-4a4fdee346ff188a86b02c010379140e_ScreenHunter-004.jpg.html" ]

je reexplique, car je crois que je ne formule pas correctement,
sur une feuille avec um mois de representer
Je selectionne une zone, puis
j'ai un bouton reservation, quand je clique dessus un userform s'ouvre, dessus il me demande entrez le nom, je lui donne.
la macro qui est sous l'userform se declanche: je l'a met ci dessous:

Private Sub CommandButton1_Click()
If Controls("Textbox1") = "" Then
MsgBox "Vous devez ABSOLUMENT indiquer Un Nom !", vbExclamation, _
"ERREUR ... Entrez un Nom SVP !"
Controls("Textbox1").SetFocus
Exit Sub
End If

With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Merge
Selection = UserForm1.Textbox1
Unload UserForm1
With Selection.Interior
.Color = 65535
End With
With Selection.Font
.ColorIndex = xlAutomatic
Selection.Font.Bold = True
End With

If Range("C9").Interior.Color 65535 Then Range("B9") 0.25
If Range("K9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25
If Range("R9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25
If Range("Y9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25

If Range("C10").Interior.Color 65535 Then Range("B10") 0.25
If Range("K10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25
If Range("R10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25
If Range("Y10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25

If Range("C11").Interior.Color 65535 Then Range("B11") 0.25
If Range("K11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25
If Range("R11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25
If Range("Y11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25

Range("A1").Select
End Sub


et qunad je reviens sur la feuille, la zone que j'avais selectionnee, est bien en jaune et le nom est au milieu de la zone qui est fusionnee. et la cellule en B9 affiche 25% si j'ai selectionne une semaine.
voila.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 févr. 2011 à 20:58
Bonjour,

D'accord, en fait, ce n'est pas exactement comme tu le décrit, je pense que ce que tu cherches ressemble plus à :
If Range("C9").Interior.Color 65535 Then Range("B9") 0.25
If Range("K9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25
If Range("R9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25
If Range("Y9").Interior.Color 65535 Then Range("B9") Range("B9") + 0.25

If Range("D10").Interior.Color 65535 Then Range("B10") 0.25
If Range("L10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25
If Range("S10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25
If Range("Z10").Interior.Color 65535 Then Range("B10") Range("B10") + 0.25

If Range("E11").Interior.Color 65535 Then Range("B11") 0.25
If Range("M11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25
If Range("T11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25
If Range("AA11").Interior.Color 65535 Then Range("B11") Range("B11") + 0.25 


non ?

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
6 févr. 2011 à 21:09
bonsoir
Oui c'est ca, a part que dans la 2 zone que tu as mis ce serait:

If Range("C9")
If Range("K9")
If Range("R9")
If Range("Y9")

If Range("C10")
If Range("K10")
If Range("R10")
If Range("Y10")

If Range("C11")
If Range("K11")
If Range("R11")
If Range("Y11")

les colonnes sont les memes, sauf que je descend a chaque d'une ligne. c'est tu si l'on peux automatiser ca, sinon je vais faire 65 fois les quatre premieres lignes.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 févr. 2011 à 22:03
Bonjour,

Le premier code fourni fait cela.
à partir de la ligne 9

Mon site
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
6 févr. 2011 à 22:05
Bonjour,

Mais si la deuxième proposition ligne/ligne fonctionne et pas la première proposition, il y a un problème de parcours, si tu le vois, j'essayerais de trouver la cause du problème.

Mon site
0
chris09300 Messages postés 140 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 18 avril 2012 1
6 févr. 2011 à 22:07
oui je suis d'accord mais il s'arrete a la ligne 11 et j'ai 65 lignes.
il faut que je reciopie ce code pour les 65 lignes,
je pensais qu'il existait une boucle.
0
Rejoignez-nous