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

reegrr

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.

Rechercher des sujets similaires à "conversion xls 2003 xlsm macro fonctionne"