Indice feuille dans boucle for

Résolu/Fermé
cartiers - 21 févr. 2013 à 08:52
 cartiers - 21 févr. 2013 à 12:13
Bonjour,
Me revoilà pour une troisième question.
J'ai créé un classeur avec plusieurs pages, malheureusement pas dans l'ordre qui aurait pu m'arranger.
Feuil3, Feuil4, Feuil7, Feuil8, etc sont des pages pour lesquels le code est à peu près identique et correspondent à mes chapitres 1, 2, 3, 4, etc...
Partant de la feuille 2, je voudrais pouvoir automatiser une procédure vers les autres feuilles.
Voici une partie du code :
For i = 1 To 8
k = 3 * (i + 3)
m = 6 + i
Range("R" & k) = 0
S = Application.WorksheetFunction.CountA(Range("B" & k & ":O" & k))
Range("R" & k) = S
   For j = 1 To 16
     If Sheets("Chapitres").Cells(k, 1 + j) <> "" Then
        Sheets(m).Cells(7, 10 + j) = Sheets("Chapitres").Cells(k, 1 + j).Value
     Else
        j = j + 1
        Sheets(m).Cells(7, 9 + j) = Sheets("Chapitres").Cells(k, 1 + j).Value
     End If
    Next j
Sheets(m).Columns("P:EZ").Hidden = True
Next i

J'ai du créer la variable k pour affecter les valeurs de la ligne k aux chapitres (ligne 6 dans chapitre 1, ligne 9 au chapitre 2, ligne 12 au chapitre 3, etc...)
J'avais espéré pouvoir indiquer "sheets("chapitre i") mais il refuse ce nom. J'ai donc essayé avec sheets(m) en séparant le code en 2 (écrit sans variable pour les feuilles 3 et 4 puis avec variables pour les autres, qui se suivent).
Il me dit que "l'indice n'appartient pas à la sélection" et quand je regarde k, il m'indique que k = 6 mais quand je passe sur m, il écrit vide. C'est pour cela que ma ligne en gras bug.
Pourquoi le m est-il vide?? Qu'ai-je fait de différent du k? (j'ai même essayé de renommer m en autre chose, même problème).
Auriez-vous une idée, s'il vous plait ?
PS : Je ne fais du vba que depuis 4 jours (début de mon congé maternité) donc je ne me débrouille pas encore très bien et certains codes peuvent peut-être être largement améliorés. Ne m'en voulez pas trop, svp.

Merci de votre aide et du temps que vous aurez pris à me lire. Je sais, c'était un peu long mais en général, vous préférez qu'on soit précis.

A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
21 févr. 2013 à 09:14
Bonjour,

Difficile à comprendre:

quand i=1
on a k= 3 *(1+3) soit 12 et tu indiques 6... ?

pour le coup du "m"
tu peux écrire
sheets("chapitre" & i) fait attention si tu as mis un espace entre chapitre et i, iol faut alors écrire
sheets("chapitre " & i)


Voilà, pour l'instant, je ne peux pas en dire plus

puisque tu débutes en VBA- bienvenue à bord du Titanic- je te conseilles ce topo
https://bidou.developpez.com/article/VBA/
0
Merci, ça fonctionne très bien avec l'astuce de l'espace après chapitre.
J'avais séparé mon script en deux parties (pour k = 6 et 9, j'avais fait sans boucle et j'essayais de mettre une boucle à partir de k=12 car après, toutes les feuilles se suivaient).
Mais avec le nom chapitre 1, chapitre 2, chapitre 3, plus aucun problème.
Merci encore.
0