For i to next ...

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
-
Bonjour à vous tous !
A nouveau sur le forum pour avoir solliciter encore votre aide.
Je vais tenter d'exposer ma problématique aussi clairement que possible.
Nous avons une liste qui peut varier dans laquelle nous voulons surligner un certain nombre de lignes sélectionnées selon un pas précis.
Exemple : une liste de 10 lignes, je veux 4 lignes (variable echantillon) qui seront déterminées toutes les x lignes .
x étant déterminé par le nombre de lignes (variable nombre) divisé par l'échantillon.
Ca marche à peu près avec ce bout de code , mais je voudrais que si ma liste est courte, il reprenne au début.

For i = 8 To Nombre + 7 Step Pas
          
        Rows(i).Select
        With Selection.Interior
             .ColorIndex = 6
             .Pattern = xlSolid
             .PatternColorIndex = xlAutomatic
        End With
       
     Next i

Merci encore pour votre aide.
-Dominike -

37 réponses

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

Bonjour et merci Kévin pour ton aide.
J'ai pris connaissance de ta proposition mais je commence un peu à patauger car mon code s'épaissit et je ne sais pas vraiment où insérer cette proposition.
Je vais tenter d'expliquer le but à nouveau :


Une liste (variable Nombre) qui commence à la ligne 8 du tableau (c'est comme ça!). Je dois surligner un certain nombre d'entre-elles (nombre correspondant aux variables Echantillon ou CGEA) et cela selon un pas précis correpondant à Nombre divisé par Echantillon (variable Pas).
Ca veut dire par exemple :
J'ai une liste de 8 qui commence en ligne 8.
Je dois sélectionner 5 lignes selon un pas de 9/5 arrondi à l'entier supérieur soit  toutes les deux lignes. Je compte donc 2 à chaque fois.
Je surligne donc les lignes 9, 11, 13,15. Il me reste donc une ligne à surligner, mais je dois remonter puisque ma liste est finie.
Suivant le même décompte, je vais retomber sur la ligne 9 déjà prise en compte. 
Je dois donc sélectionner la suivante non surlignée, la 10.
Au total, j'aurai surligné mes 5 lignes : 9,10,11,13 et 15. 

Je peux, si le règlement l'autorise te transmettre soit l'intégralité de mes codes ou même encore les fichiers. Je fatigue un peu là...
Merci pour ton aide et tes explications.
Cordialement
-Dominike -
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Petite correction :
Lire " Je dois sélectionner 5 lignes selon un pas de 9/5 arrondi à l'entier supérieur ".


Merci encore ....

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

Flûte , zut et crotte..
NON LIRE  "Lire " Je dois sélectionner 5 lignes selon un pas de 8/5
arrondi à l'entier supérieur ".
Il est temps que je me repose.
Et le chien qui n'est pas encore rentré, c'est que je m'inquiète moi ....
-Dominike -
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
J'ai compris ce que tu voulais faire, mais ma question était (je reformule): pourquoi faire aussi compliqué au lieu de simplement surligner les 5 lignes au hasard?
Je ne veux pas ton code, je veux simplement savoir ce que l'on te demande. (je doute que la demande sur laquelle tu te base pour créer cet algo soit aussi confuse et prenne 2 pages )

Je surligne donc les lignes 9, 11, 13,15. Il me reste donc une ligne à
surligner, mais je dois remonter puisque ma liste est finie.
Suivant le même décompte, je vais retomber sur la ligne 9 déjà prise en compte. 
Je dois donc sélectionner la suivante non surlignée, la 10.
Avant tu nous a dis qu'a la 2ème boucle il fallait commencer à la 1ère ligne surlignable, sauf erreur (c'est a dire la 8ème ligne).

Et le chien qui n'est pas encore rentré, c'est que je m'inquiète moi ....
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Perso, j'ai abandonné.
Kevin : http://www.animal-perdu.fr/index.php?option=com_alphacontent&section=9&cat=74&Itemid=111

Dominike :
Pour la dernière fois (et après j'abandonne définitivement), au lieu de te perdre en explications toujours aussi peu claires, donne nous 2 ou 3 exemples d'une vingtaine de lignes avec la mension "Ligne x" ou "Ligne x colorisée".
Mets toi bien dans la tête qu'il ne faut pas tenir compte des 8 premières lignes puisqu'elles ne font pas partie des choix.
Le chiffre 8 sera additionné au moment de faire le coloriage.
Il faut arrêter de raisonner en échantillons, on fait de la programmation !

Exemple d'exemple :

Nombre de sélections à faire : 6
Nombre de lignes : 23 (et je ne compte pas les 8 premières sans intérêt)
Si tu as du mal avec les équations d'une ligne (y = a * x + b), remets toi vite au courant.

Ligne 1   Colorisée (*)
Ligne 2
Ligne 3
Ligne 4   Colorisée
Ligne 5
Ligne 6
Ligne 7
Ligne 8   Colorisée
Ligne 9
Ligne 10
Ligne 11
Ligne 12   Colorisée
Ligne 13
Ligne 14
Ligne 15
Ligne 16   Colorisée
Ligne 17
Ligne 18
Ligne 19
Ligne 20   Colorisée
Ligne 21
Ligne 22
Ligne 23

(*) Celle là est colorisée parce qu'on est arrivé à la fin sans avoir atteint les 6 sélections demandées.
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Désolé, je ne le fais pas exprès !
----------------------------------  Donc :
Je veux sélectionner des lignes (variable Echantillon) dans ma liste (variable Nombre) selon un pas de (Nombre/Echantillon). Le pas doit être arrondi à l'entier supérieur.
-----------------------------------  Exemple :
Liste de 9 avec échantillon de 4 donc un pas de 2,25 arrondi à 3
---------------------------------------- 
Ligne 1
Ligne 2
Ligne 3 (colorisée)
Ligne 4 (colorisée car le pas de 3 tombait sur ligne 3 déjà colorisée donc +1)
Ligne 5
Ligne 6 (colorisée)
Ligne 7
Ligne 8
Ligne 9 (colorisée)
------------------------------------------
Me comprenez-vous mieux ?

-Dominike -
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Ok, c'est plus clair.
Donc nos précédentes solutions étaient quasiment bonnes.
Tu aurais pu te creuser un peu les méninges !

   Dim Pas As Integer ' important pour les arrondis
   Pas = Nombre / Echantillons
   Dim Compteur As Integer
   Compteur = 0

   For r = Pas To Nombre Step Pas
      ' Ici, Coloriage de la ligne 'r'
      Compteur = Compteur + 1
   Next r

   If Compteur < Echantillons Then
      For r = Pas To Nombre Step Pas
         Rows(r).Select
         Do While Selection.Interior.ColorIndex = 6
            r = r + 1
            Rows(r).Select
         Loop
         ' Ici, Coloriage de la ligne 'r'
         Compteur = Compteur + 1
         ' On range les crayons de couleur si le compte est bon
         If Compteur >= Echantillons Then Exit For
      Next r
   End If

Il te suffisait de combiner mes propositions avec celles de Kevin.

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
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Oui et non...

Tout d'abord:
Ca ne me dit toujours pas pourquoi tu fais ça comme ça (hé oui, ça m'intéresse, mais si tu veux pas le dire pas grave ^^).

- Pourquoi faut-il commencer à 'Pas' et pas à la 1ère ligne?
- Pourquoi le pas doit-il absolument valoir l'entier supérieur à Nombre/Echantillon?

Ces questions sont importante car elle change de beaucoups la difficulté du problème.

Ensuite:
Ton dernier message à le mérite d'être le plus clair de tous, par contre il contredit ta version précédente:
Une liste de 9
Un échantillon de 5
Je dois donc surligner 5 lignes selon un pas de 9/5 (1,8 arrondi à 2)
Ca veut dire :
Je surligne les lignes 2, 4, 6, 8 et je remonte à la ligne 1 pour avoir mon échantillon de 5.
Donc d'après ton dernier message, il ne faut plus remonter à la ligne 1 mais recommencer la même boucle (en ajoutant un offset pour ne pas tomber sur les même lignes). De plus, maintenant on prend l'entier supérieur pour le 'Pas'.
Je note qu'avec cette technique (pas plus mal que l'autre, au contraire, elle est plus simple à mettre en oeuvre), on sait que la ligne 1 ne sera jamais sélectionné, sauf si Echantillon = Nombre.

Donc:

Dim Nombre As Integer = [Nombre de lignes]
Dim Echantillons As Integer = [Nombre d'échantillons voulus]
Dim Pas As Integer = EntierSupérieur(Nombre/Echantillons)
Dim Debut As Integer =7 ' L'index de la 1ère ligne
Dim r As Integer = Pas' La ligne en cours de traitement
   
For iAs Integer = 1 To Echantillons' Une itération pas échantillons
    ' Tester si on est arrivé à la fin des lignes...
    If r > Nombre Then
        ' ...Oui: On recommence au début des lignes mais avec un offset de 1
        r = Pas +  1
    End If
    ' Surligner la ligne
    Rows(r + Debut).Select
    Selection.Interior.ColorIndex = 6
    Selection.Interior.Pattern = xlSolid
    Selection.Interior.PatternColorIndex = xlAutomatic
    ' Passer à la prochaine ligne
    r = r + Pas
Next

Je finis:

- Comme je l'avais dis, c'est un peu plus simple.
- Si tu me donne comme réponse, en rapport avec mes questions du début de mon message, que ton but est "de faire une sélection de E echantillons parmis L lignes au hasard", je pique une crise
- Cette fois, j'ai testé le code:

jack:

Très intéressant ton lien
J'abandonne bientôt aussi, mais bon, j'ai rien d'autre à faire en même temps...
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

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

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

Ce rapide message pour vous dire que je suis parvenu à faire exactement ce que je souhaitais.
Ceci n'aurait pas été possible sans votre aide.
Merci à vous en dépit de vos désagréables mais peut être compréhensibles mouvements d'humeur....
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Champagne ?
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
En voilà une bonne idée, histoire de détendre l'atmosphère après ce grand moment de stress

Il faut nous comprendre... avec les uns qui ne savent pas expliquer ou qui ne savent pas vraiment ce qu'ils veulent , les autres qui ne savent pas écrire français, sans oublier ceux qui ont un travail à rendre 3 jours après et qui ne comprennent rien à la programmation
La programmation, il y en a qui ont ça dans la peau, et d'autres pour qui c'est trop abstrait, et malgré leurs efforts ils ne sont pas capable de contruire un algo correct. J'espère simplement que tu a compris notre démarche, et que la prochaine fois tu saura faire ça tout seul...
C'était franchement pas compliqué une fois qu'on a compris le but du "jeu". Le tout est de bien poser le problème, tout comme pour un problème mathématique. Il faut penser logique, et trouver la démarche la plus simple et la plus courte pour résoudre le problème...

Fais le tours des posts, tu verra que plus de 50% des questions sont incompréhensibles (la tienne en fesait partie). Et donc quoi penser de tout ça? Perso, je me demande pourquoi ces gens se lance dans la prog quelques-fois. Moi j'ai appris la prog tout seul, comme loisir, et ce en cherchant sur Google et sur divers site de programmation, mais jamais je ne suis venu poser une question sur un forum sans avoir cherché des heures durant. Et j'ajoute aussi que jamais je n'ai posé des question au sujet de la construction d'un algorithme basé sur du code "simple", c'est à dire que mes questions était dans le but de trouver une API ou une fonctionnalité spéciale que je ne connaissais pas, mais pas pour construire quelque chose avec du code que je connaissais déjà (pas très clair ma phrase, voici un exemple:)
Le code qu'on t'as fournis, as-tu eu des difficulté pour le comprendre? Est-ce un truc nouveau pour toi? J'en doute, il n'y a vraiment aucune difficulté. Il s'agit simplement de penser juste, et non de connaitre de nouvelles possibilitées de la programmation, il suffit de comprendre le fonctionnement d'une boucle et d'une condition, sans plus.

Alors pourquoi "prend-je" la peine de répondre? Parce que ça me plait de partager mon savoir (). Si les gens n'ont pas la patience d'apprendre à programmer en étudiant des sources et en cherchant sur Internet, tant pis pour eux, ils n'iront de toute façon pas loin si ils doivent venir sur un forum demander de l'aide à chaque fois qu'il doivent construire un algo de plus de 10 lignes ou envoyer une requete SQL.

J'exagère un peu dans mes propos, mais c'est pour bien faire comprendre comment je vois la chose. Mais comme toujours, je n'en fais pas une généralité, nous avons tous débuté et je respecte ceux qui ont envie d'apprendre. Malheureusement ce n'est pas le cas pour tout le monde (par exemple les gens qu doivent rendre une appli 3 jours après à leur prof et qui n'ont jamais écris une ligne de code), et ces cas nous font quelque-fois perdre notre patience.

Dans le meilleur des mondes, tous les nouveaux sujets postés sur un forum comme celui-ci devrait être des questions qui n'ont jamais été posé, qui nous apprennent à chaque fois de nouvelles choses et qui font avancer les connaissances générales d'un programmeur. Malheureusement, dans notre monde et à ce jour, ce genre de sujet reste très rare.

Je me suis emporté, s'cusez moi, j'en ai oublié le champagne...
Santé
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
C'est pas faux !

Excuses pour les biscuits, sont mous parce qu'ils sont un peu vieux





<hr />
Cling ! à vot'santé


<hr />



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
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
"C'est pas faux !"

Quoi, qu'est ce que tu comprend pas?

> http://www.youtube.com/watch?v=UlNQMLl-xjU

Me contenterai du champagne...
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Excellent, Kevin, ça m'a permis de connaitre la version II de la botte secrète.
Messages postés
70
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonjour à vous et merci pour ces explications franches.
Maintenant, il faut comprendre que pour certains, comme moi, il peut s'agir de besoins ponctuels qui peuvent parfois simplifier grandement la vie de beaucoup.
On dit qu'au royaume des aveugles les borgnes sont rois..
Petit borgne donc, je bosse dans une boîte où j'ai pu fournir des petits outils simples pour commencer.
Ces modestes contributions ont fait naître le goût et l'envie. Mais je suis parti de zéro avec le maigre temps que mes fonctions managériales me laissaient.
C'est comme ça que je peux fonctionner, je pique quelques bouts de codes (VBA et autres....) que je tente de comprendre et d'adapter à nos besoins de tous les jours.
Mais ces réalisations souvent en appellent d'autres généralement plus ambitieuses qui réclament des compétences que je n'ai pas pu acquérir.
Comme quand on gratouille une guitare et qu'on s'en sort ma foi pas trop mal, mais qu'on est pas prêt pour un concert.
Alors on demande des tuyaux aux pros.
Mais sachez que j'ai passé beaucoup de temps à chercher par moi même et que j'ai dû retourcher les derniers codes que voius m'avez offerts.
L'important n'est-il pas de participer et de se faire plaisir ?
J'apprécie en tout cas vos messages et le champagne.
Oserais-je dire à bientôt ?
Très cordialement.

-Dominike -