Marco Excel ne fonctionne plus en version 2016

Résolu
Phil54110 Messages postés 1 Date d'inscription lundi 13 novembre 2017 Statut Membre Dernière intervention 13 novembre 2017 - Modifié le 13 nov. 2017 à 11:29
 phil54110 - 15 déc. 2017 à 12:14
Bonjour,

Je suis un utilisateur excel qui ne fait pas de programmation et viens d'acheter la version 2016.

La macro ci-dessous ne fonctionne plus le 'c' de 'For Each c In Selection' est en surbrillance et j'obtiens le message '' Projet ou bibliothèque introuvable...

For Each c In Selection
Select Case (c)

Case 1: c.Interior.ColorIndex = 3 '"1"
If c.Value = "01" Then c.Font.ColorIndex = 2
Case 2: c.Interior.ColorIndex = 10 '"2"
If c.Value = "02" Then c.Font.ColorIndex = 2
Case 3: c.Interior.ColorIndex = 45 '"3"
If c.Value = "03" Then c.Font.ColorIndex = 1
Case 4: c.Interior.ColorIndex = 41 '"4"
If c.Value = "04" Then c.Font.ColorIndex = 2
Case 7: c.Interior.ColorIndex = 28  '"07"
If c.Value = "07" Then c.Font.ColorIndex = 1
'Case " A": c.Interior.ColorIndex = 33   '"a"
'If c.Value = " A" Then c.Font.ColorIndex = 1
'Case " B": c.Interior.ColorIndex = 33   '"b"
'If c.Value = " B" Then c.Font.ColorIndex = 1
'Case " C": c.Interior.ColorIndex = 26   '"c"
'If c.Value = " C" Then c.Font.ColorIndex = 1

End Select


EDIT : Mise en forme du code en utilisant correctement les balises de code (la coloration syntaxique).

Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
Jordane45


Je vous remercie par avance de ma sortir de bien vouloir m'aider à régler ce problème.

11 réponses

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 344
13 nov. 2017 à 11:33
Bonjour,

For Each c In Selection

    ' A lire : http://excel-malin.com/tutoriels/vba-tutoriels/vba-select-case-mode-d-emploi/
    Select Case (c.Value)
        Case 1:
            c.Interior.ColorIndex = 3 '"1"
            c.Font.ColorIndex = 2
        Case 2:
            c.Interior.ColorIndex = 10 '"2"
            c.Font.ColorIndex = 2
        Case 3:
            c.Interior.ColorIndex = 45 '"3"
            c.Font.ColorIndex = 1
        Case 4:
            c.Interior.ColorIndex = 41 '"4"
            c.Font.ColorIndex = 2
        Case 7:
            c.Interior.ColorIndex = 28  '"07"
            c.Font.ColorIndex = 1
    End Select
Next



NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
Bonjour Jordane45,
J'ai pu constaté combien tu ma déjà sauvé. J reviens donc vers toi car une autre macro me pose problème.
On m'a fait cette macro pour créer des pdf avec le nom qui change autant de fois qu'il n'y a d’occurrences. Elle fonctionnait bien sur Excel 2010 par contre j'ai achté MS Office 2016 et rien ne va plus. Quand j'active la macro, s'affiche le message suivant : Erreur de compilation : Projet ou Bibliothèque introuvable.

PS: avant d'activer la macro, je dois :
1 Modifier l'imprimante et choisir AcrobatPDF
2 Dans le panneau propriété de l'imprimante Décocher se limiter aux polices système
Dans l'éditeur Macro
1 Aller dans l'onglet outil>Références
2 cocher Acrobat Distiller

Je te remercie par avance

Public Sub PrintToPDF_sens1()

Dim i As Integer
Dim myPDF As PdfDistiller
Dim PSFileName As String
Dim PDFFileName As String
Dim Dossier As String

For i = 1 To Range("AQ1").Value

Range("A1").Select
ActiveCell.FormulaR1C1 = i
Tri_sens_1

Dossier = "D:\REGION\Horaires à l'arrêt\Briey\Val de Briey Sens 1 -"
PSFileName = Dossier & Range("A12").Value & ".ps"
PDFFileName = Dossier & Range("A12").Value & ".pdf"
LOGFileName = Dossier & Range("A12").Value & ".log"


ActiveWindow.SelectedSheets.PrintOut copies:=1, Collate:=True, PrintToFile:=True, PrToFileName:=PSFileName

Set myPDF = New PdfDistiller
myPDF.FileToPDF PSFileName, PDFFileName, ""
Set myPDF = Nothing

Kill PSFileName
Kill LOGFileName
Next i

End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié le 13 nov. 2017 à 14:14
Bonjour
Une sélection est un objet range
l'expression :
For Each c In Selection

implique donc que chaque c est également un objet Range (une cellule)
Dès lors :

Select Case (c)
Case 1
...
case 2

n'ont aucun sens, 1 , 2, etc ... étant des valeurs.
Et même en cas de (trop) grande tolérance de VBA, il y a paradoxe entre un c, qui serait une valeur, et un c.interior ... qui invoquerait un objet !
La macro ci-dessous ne fonctionne plus

"plus", dis-tu ? Ainsi écrite, elle ne risque pas d'avoir un jour fonctionné !
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Bonjour,
Je peux vous confirmer qu'elle fonctionne sur Excel 2010.
Bien que je ne sois pas plus avancé, je vous remercie du temps que vous m'avez accorder.
Faute de mieux je vais acheter une version 2010.
Bonne journée
0
Bonjour Jordan54,
Merci de ton aide par contre, j'ai recopié ta macro et je rencontre toujours le même problème.
La macro ne démarre pas. elle surligne le "c" de "For Each c In Selection" et Une invite apparaît avec le message Erreur de compilation Projet ou bibliothèque introuvable.
Merci quand même
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
20 nov. 2017 à 15:21
Bonjour,

Est-ce que "C" est utilisé à quelque part dans ton code autre que pour une variable Range?
0
Bonjour,

Je suis un simple utilisateur. Je viens de passer à Excel 2016.
Cette macro donne une couleur spécifique à certaines cellules
Jusqu'à lors elle fonctionnait mais depuis Excel 2016 j'obtiens une boîte d'erreur avec le massage ''Erreur de compilation : Projet ou bibliothèque introuvable.

Un grand merci à celui qui me sortira de cette panade.

La macro


Sub couleur_cellules()
'
' couleur_cellules Macro
' Macro enregistrée le 16/06/2008 par philippe.belleville
' Raffraichissement de couleur

Range("ba22:ba52").Select
Selection.Copy
Range("c22,f22,I22,L22,O22,R22,U22,X22,AA22,AD22,AG22,AJ22,AM22,AP22,AS22").Select
Range("c22").Activate
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Range("BG8:BG12").Select
Application.CutCopyMode = False
Selection.Copy
Range("AD8:AE12").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Range( _
"ad8,ad9,ad10,ad11,c22:c52,f22:f52,I22:I52,L22:L52,O22:O52,R22:R52,U22:U52,X22:X52,AA22:AA52,AD22:AD52,AG22:AG52,AJ22:AJ52,AM22:AM52,AP22:AP52,AS22:AS52,AV22:AV52" _
).Select


For Each c In Selection
Select Case (c)

Case 1: c.Interior.ColorIndex = 3 '"1"
If c.Value = "01" Then c.Font.ColorIndex = 2
Case 2: c.Interior.ColorIndex = 10 '"2"
If c.Value = "02" Then c.Font.ColorIndex = 2
Case 3: c.Interior.ColorIndex = 45 '"3"
If c.Value = "03" Then c.Font.ColorIndex = 1
Case 4: c.Interior.ColorIndex = 41 '"4"
If c.Value = "04" Then c.Font.ColorIndex = 2
Case 7: c.Interior.ColorIndex = 28 '"07"
If c.Value = "07" Then c.Font.ColorIndex = 1
'Case " A": c.Interior.ColorIndex = 33 '"a"
'If c.Value = " A" Then c.Font.ColorIndex = 1
'Case " B": c.Interior.ColorIndex = 33 '"b"
'If c.Value = " B" Then c.Font.ColorIndex = 1
'Case " C": c.Interior.ColorIndex = 26 '"c"
'If c.Value = " C" Then c.Font.ColorIndex = 1


End Select


Next
End Sub
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
Modifié le 21 nov. 2017 à 11:02
Bonjour,

Essaie a la place de

 c.Interior.ColorIndex = 3



c.Interior.Color = RGB(255, 0, 0)



voir ceci pour adapter:


https://forum.excel-pratique.com/cours-astuces/couleurs-rgb-t21547.html

@+ Le Pivert
0
toujours pas !!!
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 nov. 2017 à 11:34
J'ai ajouté car pas déclaré:

Dim c


cela fonctionne avec office 2007

là je ne sais pas n'ayant pas 2016!
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 nov. 2017 à 15:34
Ceci fonctionne sous 2016
En passant, évite les Select/Selection, sauf si nécessaire, qui ne servent à rien d'autre que de ralentir le processus

Sub couleur_cellules()
Dim C As Range

Range("ba22:ba52").Copy
Range("c22,f22,I22,L22,O22,R22,U22,X22,AA22,AD22,AG22,AJ22,AM22,AP22,AS22").PasteSpecial Paste:=xlPasteFormats

Range("BG8:BG12").Copy
Range("AD8:AE12").PasteSpecial Paste:=xlPasteFormats

Range( _
"ad8,ad9,ad10,ad11,c22:c52,f22:f52,I22:I52,L22:L52,O22:O52,R22:R52,U22:U52,X22:X52,AA22:AA52,AD22:AD52,AG22:AG52,AJ22:AJ52,AM22:AM52,AP22:AP52,AS22:AS52,AV22:AV52" _
).Select

For Each C In Selection
Select Case C.Value
Case 1: C.Interior.ColorIndex = 3
C.Font.ColorIndex = 2
Case 2: C.Interior.ColorIndex = 10
C.Font.ColorIndex = 2
Case 3: C.Interior.ColorIndex = 45
C.Font.ColorIndex = 1
Case 4: C.Interior.ColorIndex = 41
C.Font.ColorIndex = 2
Case 7: C.Interior.ColorIndex = 28
C.Font.ColorIndex = 1
End Select
Next
End Sub


Je vois que tu vérifies si C = "01" et autres
Est-ce que c'est le format du texte que tu vérifies ?
Si oui, utilise C.Text plutôt que .Value

0
Un grand Merci à tous avec une mention particulière à cs_MPI qui me sort un sacré épine du pied.
J'espère que son aide pourra servir à d'autres.
0
Rejoignez-nous