chris09300
Messages postés140Date d'inscriptionlundi 9 juin 2008StatutMembreDernière intervention18 avril 2012
-
7 févr. 2011 à 12:44
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
7 févr. 2011 à 23:56
bonjour
je suis sur excel 2007. j¡ai un tableau de 31 colonnes sur 65 lignes.
je souhaiterais faire une macro, qui cherche ligne par ligne.
si il y a une case de couleur jaune que s'affiche dans la case rouge a gauche 25%
s'il y 2 case jaune = 50%
3 = 75% et 4 case 100%
et que la macro descende d'une ligne dans le tableau , fais la meme recherche que ci dessus et note la valeur dans la case bleu.
et ainsi de suite jusqu'a la 65 eme ligne.
je joint ci dessous une capture d'ecran de mon fichier.
j'ai essayer plusieurs macro sans resultat, ca marche que sur la 1 ligne
merci
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 févr. 2011 à 23:56
Ajoute une remise à zéro
Range("B9").Offset(i, 0) = 0
entre ton For et ton premier If
car actuellement, si la condition sur C9 n'est pas vraie, Range("B9").Offset(i, 0) contient n'importe quoi, pas forcement 0
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 févr. 2011 à 15:02
PS : Dans une feuille vierge, ce code renvoi un affichage au format date, par défaut.
L'affichage n'est donc pas réellement représentatif de ce que le code fait (ne tient pas compte de ":00" à la fin de chaque champ).
Où alors, dans le code, remplace
& ":" &
par
& "-" &
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 févr. 2011 à 17:31
On va pas faire le code à ta place.
Une fois que tu auras compris comment fonctionne une boucle, tu utilises maCell pour connaitre son contenu, sa couleur, sa police, tout ce que tu veux bien et tu fais des If-Then-Else-EndIf pour faire tes actions.
Pour trouver les bonnes syntaxes, pense à enregistrer une macro pendant que tu colorise une cellule par exemple : Tu auras les propriétés et les valeurs à tester.
chris09300
Messages postés140Date d'inscriptionlundi 9 juin 2008StatutMembreDernière intervention18 avril 20121 7 févr. 2011 à 17:39
bonsoir
je ne te demande pas de faire le code a ma place, je trouve ta formule pas tres encourageante, cela fait plusieurs jours que je cherche a faire cette macro j'ai biensur fait des essais non concluant.
si tu ne souhaites pas parfaire ou ammeliore les connaissante d'autrui, ne reponds pas.
je te joints ci apres ce que j'ai fait, mais cela bloque.
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
For i = 0 To 64
If Range("C9").Offset(i, 0).Interior.Color 65535 Then Range("B9").Offset(i, 0) 0.25
If Range("K9").Offset(i, 0).Interior.Color 65535 Then Range("B9").Offset(i, 0) Range("B9").Offset(i, 0) + 0.25
If Range("R9").Offset(i, 0).Interior.Color 65535 Then Range("B9").Offset(i, 0) Range("B9").Offset(i, 0) + 0.25
If Range("Y9").Offset(i, 0).Interior.Color 65535 Then Range("B9").Offset(i, 0) Range("B9").Offset(i, 0) + 0.25
Next
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 févr. 2011 à 20:51
Quand tu colles du code, utilise la colaration syntaxique = 3ème icone à droite = plus facile à lire et conserve l'indentation.
Si ça bloque, faudrait dire ce qui se passe.
Utilise le débogage pour suivre ce que fait le programme :
- F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement
.Color = 65535
Audacieux
Quelle couleur penses-tu que cela représente ?
Si tu regardes dans l'aide, tu verras qu'il vaut mieux utiliser la fonction RGB pour définir .Color
ou utiliser .ColorIndex
chris09300
Messages postés140Date d'inscriptionlundi 9 juin 2008StatutMembreDernière intervention18 avril 20121 7 févr. 2011 à 21:03
bonsoir
je vois que tu est un pro dans le domaine des macros, excuse moi, je suis un peu novice.
tu parle de : colaration syntaxique 3ème icone à droite plus facile à lire et conserve l'indentation.
je ne sais ce que tu veux dire.
quand je voulais ca bloque, simplement la macro fonction sur la 1 ligne, mais car je continue a selectionne d'autre zone dans les lignes inferieures, les valeurs que j'attends ne sont pas bonnes, il y a des cummuls.
ex. si dans la 1 case de resultat j'ai 50%, dans la deuxieme j'ai 25%, des que je vais sur la 3 lignes et que je choisi une autre zone j'obtient dans la case de la ligne resultat au dessus 75%.
quand a la .Color = 65535 c'est le jaune.
je ne connais pas les autres fonctions que tu me site a la fin.
merci quand meme pr tes infos. je sais j'ai des progres a faire, mais c'est en faisant et ecoutant les conseils des autres que l'on progresse.
merci
christian
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 7 févr. 2011 à 23:52
Coloration syntaxique : Les icones en haut de la fenêtre de saisie du texte, ici ^^
Ah, j'ai écrit colaration, excuses.
On n'a pas ton tableau de couleur sous les yeux et, perso, je n'ai pas le temps de me pencher sur le pourquoi de ces manips.
Commence par un seul test ET utilise le débogage : vérifie le chemin que prend le programme et pourquoi il ne va pas où tu veux.
Bah c'est le code que tu as écrit : Tu ajoutes 0.25 à la cellule de la ligne 9+i, colonne B.
Profite du débogage pour vérifier ce qu'il y a dans ta cellule avant puis après l'exécution de ta ligne de programme et/ou vérifier que tu y passes ou pas.