For i to next [Résolu]

Signaler
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
Bonsoir à tous à nouveau !
Dans l'embarras encore, je me tourne vers vous...
Après avoir surmonté ma foi pas si mal quelques difficultés, je bute à nouveau sur un  problème.
Pour tenter d'expliquer simplement :
J'ai deux variables qui correspondent :
- l'une (on dira Nombre) au nombre total de lignes d'un liste (plusieurs colonnes)
- l'autre (on dira Echantillon) le nombre de lignes de la liste (en plus des 5 premières) à sélectionner.
--------------------------------------------------
L'idée est de colorier les 5 premières lignes de la liste, puis de colorier les suivantes selon un calcul
du type "colorier (après les 5 premières) toutes les (Nombre divisé par Echantillon).
======================================================
J'ai bien tenté diverses formules de For i to next sans succès étant néanmoins convaincu que je ne suis pas très loin.
-----------------
Je ne sais pas si j'ai été clair, 
Un petit coup de main serait bienvenu.
Bonne nuit à vous  et merci d'avance ! 

-Dominike -

13 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
Ne nomme pas tes variables de la même valeurs que tes textbox.

Ton textbox, appelle le txtEchantillon.

Echantillon = CInt(txtEchantillon.Text)
il va de soit que la valeur du textbox doit etre numérique et pas du texte
@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Salut
Pas claire ta question, genre
"en plus des 5 premières" : Quelles 5 premières ?
"le nombre de lignes de la liste à sélectionner"

Bref, tu veux coloriser les lignes d'un ... on ne sait pas quoi, à partir de la 6ème ligne, en changeant de couleur toutes les X lignes.

ChangerTousLes = 3 ' lignes
Compteur = 1
Couleur(0) = &H00FFFF80&
Couleur(1) = &H00C0FFFF&
NoCouleur = 0
For i = 6 To NombreDeLignesTotales
   ' 6 parce qu'on commence après les 5 premières, si j'ai bien compris
   If Compteur >= ChangerTousLes Then
      If NoCouleur = 0 Then
         NoCouleur = 1
      Else
         NoCouleur = 0
      End If
      Compteur = 1
   End If
   ' Ici, colorise ta ligne avec la couleur de Couleur(NoCouleur)
   ' Incrémente ligne
   Compteur = Compteur + 1
Next i

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Merci Jack, C'est un début, mais ça ne fonctionne pas encore.
Il me dit "erreur de compilation, Sub ou fonction non définie !".
Pour être plus clair :
Dans ma liste de 180 lignes (variable Nombre, récupérée en A2 de ma feuille), je voudrais colorier les 5 premières LIGNES entières qui commencent seulement à la ligne 14, puis les autres selon un pas correspondant à (Nombre -5) divisé par une autre variable qui s'appelle Echantillon issue d'un UserForm.
Est-ce plus clair ?
Je me prends un peu la tête avec ça ....
Bonne journée.

-Dominike -
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Re bonjour Jack,
J'approche on dirait...
juste un petit pb à la syntaxe :

Rows("i:").Select
----
Ci-après mon bout de code :
For i = 9 To Nombre + 8
    '---- 9 parce qu'on commence après la 9éme ligne
        If Compteur >= Echantillon Then
            Compteur = 1
        End If
        Rows("i:").Select
        With Selection.Interior
                .ColorIndex = 6
             .Pattern = xlSolid
             .PatternColorIndex = xlAutomatic
        End With
         Compteur = Compteur + 1
    Next i
--------------------------------------------
Pourrais-tu m'indiquer où se trouve l'erreur ?
Merci à toi.
-Dominike -
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
salut,

Rows(i).Select

suffit amplement

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Ben j'avais essayé, mais ça me teinte toutes les lignes de 9 à 180.


Je sèche là.


Et puis j'ai un autre pb. Ma variable Echantillon que je ne peux pas récupérer dans ce module.
Et puis aussi, peut-on procéder à une opération du type "myVar3=MyVar2/MyVar1"
??????

Merci à toi encore ..
-Dominike -
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
1/ Pour tes couleurs, c'est normal que tout soit colorée, car ton Rows(i).Select est effectué à chaque passage de la boucle.
A toi de faire tes conditions pour colorer ou non.

2/ passe ta variable Echantillon en Public.

3/ Dim myVar3 As Double, MyVar2 As Double, MyVar1 As Double

MyVar2 = 5.5
MyVar1 = 2.5
myVar3 = myVar2 / myVar1

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Merci pour ton aide précieuse, mais au risque de paraître idiot,
1 /je ne sais pas arrêter le compteur...

2 / Ma variable est déclarée dans le module 1 "Option explicit " telle que "Public Echantillon As Integer" mais je ne parviens pas à indiquer sa valeur issue d'un textbox "Echantillon" car je ne sais pas où le faire.
Dans le code du UserForm, il reconnaît néanmoins cette valeur car je peux l'inscrire dans une MsgBox (toujours dans le code du UseForm).

J'ai parfois le sentiment de me compliquer l'existence et de râler après parce que je la trouve compliquée...

Merci à toi !
 
-Dominike -
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
1/ j'ai pas toutes les données en mains, mais je dirai qu'il faut faire un truc du style
If LaVariableAVerifier = i then TuColories

2/ Echantillon = CInt(TonTextBox.Text)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Vous êtes vraiment tous sympas !
Je teste et vous tiens au courant.
Au delà, quel bouquin me conseillez-vous en la matière ?

-Dominike -
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
je te conseille VBA pour Excel 2003, de John Walkenbach (éditions eyrolles).

Ca commence soft en reprenant les bases, pour aller vers du plus complexe, pas à pas.
Je le trouve au top

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Message d'erreur pour
         Echantillon = CInt(Echantillon.Text)
"Qualificateur incorrect" (?????????!!!!!!!!.....)
Je fatigue mais tiens bon !

-Dominike -
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Je venais juste de m'en apercevoir !
Merci pour votre aide te je reprends sûrement très vite contact parce que
" If LaVariableAVerifier = i then TuColories " et ça " Dim myVar3 As Double, MyVar2 As Double, MyVar1 As Double ", je ne suis pas sûr d'y arriver si facilement.
Mais je cherche un peu.
@+ et encore merci et à bientôt.

-Dominike -