Conversion XLS (97-2003) vers XLSm , Macro ne fonctionne plus
Bonjour à tous !
Sur mon lieu de travail nous utilisons un fichier excel comme tableau de service de présence/absence.
Pour des raisons de compatibilités avec Onedrive , nous devons changer l'extension d'origine du fichier excel qui est en .XLS(97-2003) en .XLSm
Le nom du classeur est Tabserv_22NK
Le soucis c'est qu'une Macro ne fonctionne plus.
Lorsque j'appuie dessus il me met " Erreur d'exécution '9' l'indice n'appartient pas à la sélection" . Il me propose un débogage et m'ouvre le fichier avec les lignes de code en mettant en surbrillance la ligne incriminée.
En 2 mots l'explication de cette macro :
Lorsque j'appuie sur le bouton qui lance la macro, il "scanne" le tableau et lorsqu'il voit certains termes, il change automatiquement la couleur d'écriture.
Par exemple, je vais écrire JC (en noir) , j'appuie sur la Macro il scanne et lorsqu'il va tomber sur le terme JC, il va changer sa couleur d'écriture en rouge.
Je précise que je ne suis pas l'auteur de la création de ce classeur et que je n'y connais quasi rien concernant les Macros. Donc soyez indulgent :)
PS: la personne à l'origine est pensionnée depuis et injoignable donc je ne peux m'en remettre à elle.
Sub Couleur()
Mois = ActiveSheet.Name
signet = Worksheets("numéros d'imputation").Cells(2, 4).Value
Annee_fichier = ActiveWorkbook.Name
extrac = Right(Annee_fichier, 9)
compt_blanc = 0
Ligne = 4
Do While compt_blanc <= 2
If Workbooks("Tabserv" & extrac).Worksheets(Mois).Cells(Ligne, 4) = "" Then
compt_blanc = compt_blanc + 1
Else
compt_blanc = 0
End If
For Colonne = 5 To 36
Correction = ActiveSheet.Range(Cells(Ligne, Colonne), Cells(Ligne, Colonne)).Borders(xlDiagonalUp).LineStyle
If Correction = 1 Then
ActiveSheet.Range(Cells(Ligne, Colonne), Cells(Ligne, Colonne)).Borders(xlDiagonalUp).Color = RGB(255, 0, 0)
End If
Type_de_jour = ActiveSheet.Range(Cells(Ligne, Colonne), Cells(Ligne, Colonne)).Value
Type_couleur = ActiveSheet.Range(Cells(Ligne, Colonne), Cells(Ligne, Colonne)).Font.Color
ActiveSheet.Range(Cells(Ligne, Colonne), Cells(Ligne, Colonne)).Activate
Select Case Type_de_jour
Case "MM", "MM/2", "BT", "BC", "DS0"
changement = ActiveCell.Value
ActiveCell.ClearContents
ActiveCell.Font.Color = RGB(0, 255, 0)
ActiveCell.Value = changement
Case "CN", "CV", "CS", "CC", "CE", "DD", "DE", "DS", "DP", "CP", "JC", "AD", "AG", "AA", "CM", "DZ", "PS", _
"SY", "IC", "IT", "TT", "CN/4", "CV/4", "JC/4", "DS/4", "-8", "-8H", "-8h", "-1h f", "-2h f", "-3h f", "-4h f", "-5h f", "-6h f", "-7h f", "-8h f", "-1h d", "-2h d", "-3h d", "-4h d", "-5h d", "-6h d", "-7h d", "-8h d", "-1H F", "-2H F", "-3H F", "-4H F", "-5H F", "-6H F", "-7H F", "-8H F", "-1H D", "-2H D", "-3H D", "-4H D", "-5H D", "-6H D", "-7H D", "-8H D", "RM"
changement = ActiveCell.Value
ActiveCell.ClearContents
ActiveCell.Font.Color = RGB(255, 0, 0)
ActiveCell.Value = changement
Case Else
ActiveCell.Font.Color = RGB(0, 0, 0)
End Select
Next Colonne
Ligne = Ligne + 1
Loop
Cells(1, 1).Activate
End Sub
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub ajouter_numéro()
Annee_fichier = ActiveWorkbook.Name
extrac = Right(Annee_fichier, 9)
Workbooks("Tabserv" & extrac).Worksheets("Numéros d'imputation").Activate
place = 1
'verif = Worksheets("Numéros d'imputation").Cells(place, 2).Value
' verif = ActiveCell.Value
Do While Worksheets("Numéros d'imputation").Cells(place, 2).Value <> ""
place = place + 1
Loop
Debug.Print place
Worksheets("Numéros d'imputation").Cells(place, 2).Activate
End Sub
Sub retour()
ActiveWindow.ActivateNext
End Sub
Sub remise()
Worksheets("Numéros d'imputation").Range("B:B").Select
Worksheets("Numéros d'imputation").Range("B:B").Sort Key1:=Worksheets("Numéros d'imputation").Columns("B")
End Sub
En espérant que ca puisse vous aider.
Je vous remercie d'avance.
Bonjour Essayé en mettant
extrac = Right(Annee_fichier, 10)a la place de
extrac = Right(Annee_fichier, 9)Bonjour,
Sans avoir de support (un fichier de même structure mais dont les données confidentielles sont remplacées par des valeurs bidons) difficile de se représenter où se situe le problème.
-Que vaut "extrac = Right(Annee_fichier, 9)" ?
-le classeur "Workbooks("Tabserv" & extrac)" existe-t-il ?
- sous quelle forme sont écrits les noms des feuilles (mois) ?
Cdlt
bonjour, Arturo83,
Que vaut "extrac = Right(Annee_fichier, 9)
22NK.xlsm au lieu de _22NK.xlsm
d'où la proposition de Valentin85
Bonjour h2so4, Valentin85,
Quand j'avais répondu je n'avais rafraîchi l'affichage, et effectivement au début j'étais parti comme la solution proposée par Valentin, mais j'avais oublié d'intégrer l'extension du nom de fichier, d'où mon incompréhension.
Bonne journée à tous.
Cdlt
Bonjour,
Une solution à fonctionnée.
If Workbooks("Tabserv" & extrac)
J'ai mis un _ à Tabserv , ce qui donne :
If Workbooks("Tabserv_" & extrac)
C'est bizarre que la version XLS acceptait sans le Underscore et que la version XLSm non....
Enfin quoi qu'il en soit, le problème est résolu.
Je vous remercie tous pour vos réponses.
Je mets la discution en "résolu".
Bonne journée à tous.