l'indice n'appartient pas à la sélection - VB/VBA/VBS - Programmation
Marsh Posté le 23-07-2012 à 08:10:46
Bonjour,
à quelle ligne l'erreur se met-elle ?
tous les onglets "sources" ainsi que l'onglet "Annee 2011"existent bien ?
Marsh Posté le 23-07-2012 à 08:17:41
Bonjour,
dès que je clique sur la macro, le msg est affiché. je confirme que tous les onglets sources sont créés ainsi que le destinataire : Annee 2011.
Je confirme aussi qu'à la 1ère utilisation la macro s'est parfaitement executée. C'est vraiment important pour moi car (13 X 5000 Lignes). Et j'ai une pression de mon sup, sachant que je n'y connais rien sauf la logique mais pas vraiement le langage.
Là je dois partir à mon travail et je repasse à domicile vers 12h30. si vous avez un tuyau pour me dépanner, merci d'avance. SP.
Marsh Posté le 22-07-2012 à 21:33:48
Bonjour,
tout d’abord je dois préciser que je ne pratique pas VB. Je comprends un peu les instructions et les raisonnements mais c’est tout. Ci-joint le code écrit par un collègue IT pour me dépannrer : il s’agit de transférer le contenu d’une colonne provenant de 13 onglets dans 1 onglet toutes les .6 colonnes à partir de la colonne 12.
Quand j’ai lancé la macro pour la 1ère fois, pas de problème, mon tableau (5000 lignes par colonne à remplir) s’est bien complété. Par contre lorsque j’ai voulu renouveller l’opération, il y a tout de suite un message d’erreur : l’indice n’appartient pas à la sélection.
Mon collègue n’est pas en mesure de me dépanner actuellement. S’il y a parmi vous quelq’un pour me dépanner, merci d’avance. C’est pour mon activité professionnelle et je dois absolument rendre des analyses pour ce lundi.
Option Base 0
Option Explicit
Private Const FeuilleARemplir = "Annee 2011"
Private Sources(13) As String
Public Sub Boucle_Remplissage()
Dim Ligne As Integer
Dim LignePersonnel As Integer
Dim Colonne As Integer
Dim Source As Integer
Dim TotalFaits As Integer
Sources(0) = "Décembre N-1"
Sources(1) = "Janvier"
Sources(2) = "Fevrier"
Sources(3) = "Mars"
Sources(4) = "Avril"
Sources(5) = "Mai"
Sources(6) = "Juin"
Sources(7) = "Juillet"
Sources(8) = "Aout"
Sources(9) = "Septembre"
Sources(10) = "Octobre"
Sources(11) = "Novembre"
Sources(12) = "Décembre"
Colonne = 12
Application.ScreenUpdating = False
For Source = 0 To 12
'MsgBox Sources(Source)
'* remplissage colonne Mois
Ligne = 2
TotalFaits = 0
While Sheets(Sources(Source)).Cells(Ligne, 1) <> ""
If Ligne Mod 200 = 0 Then
Debug.Print Sources(Source) & " - " & Ligne
End If
LignePersonnel = 2
While Trim(Sheets(FeuilleARemplir).Cells(LignePersonnel, 1)) <> Trim(Sheets(Sources(Source)).Cells(Ligne, 1)) _
And Trim(Sheets(FeuilleARemplir).Cells(LignePersonnel, 1)) <> ""
LignePersonnel = LignePersonnel + 1
Wend
If Trim(Sheets(FeuilleARemplir).Cells(LignePersonnel, 1)) <> "" Then
Sheets(FeuilleARemplir).Cells(LignePersonnel, Colonne) = Sheets(Sources(Source)).Cells(Ligne, 36)
TotalFaits = TotalFaits + 1
Else
Debug.Print "Matricule non trouvé: " & Sheets(Sources(Source)).Cells(Ligne, 1) & _
" - Feuille: " & Sources(Source) & " - Ligne " & Ligne
End If
Ligne = Ligne + 1
DoEvents
Wend
Debug.Print "Total faits pour " & Sources(Source) & ": " & TotalFaits
Debug.Print "----------------------------------------------------------------------------"
Colonne = Colonne + 6
Next Source
Application.ScreenUpdating = True
End Sub