Indice feuille dans boucle for

Résolu
cartiers -  
 cartiers -
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.

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. cartiers
       
      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