Marco Excel ne fonctionne plus en version 2016 [Résolu]

Phil54110 1 Messages postés lundi 13 novembre 2017Date d'inscription 13 novembre 2017 Dernière intervention - 13 nov. 2017 à 09:21 - Dernière réponse :  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.
Afficher la suite 

Votre réponse

12 réponses

jordane45 21437 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 juin 2018 Dernière intervention - 13 nov. 2017 à 11:33
0
Merci
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
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
Commenter la réponse de jordane45
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 13/11/2017 à 14:14
0
Merci
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.
Commenter la réponse de ucfoutu
phil54110 - 19 nov. 2017 à 11:30
0
Merci
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
Commenter la réponse de phil54110
phil54110 - 19 nov. 2017 à 11:49
0
Merci
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
Commenter la réponse de phil54110
cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention - 20 nov. 2017 à 15:21
0
Merci
Bonjour,

Est-ce que "C" est utilisé à quelque part dans ton code autre que pour une variable Range?
Commenter la réponse de cs_MPi
Phil54110 - 21 nov. 2017 à 10:35
0
Merci
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
Commenter la réponse de Phil54110
cs_Le Pivert 5180 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - Modifié par cs_Le Pivert le 21/11/2017 à 11:02
0
Merci
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
Commenter la réponse de cs_Le Pivert
Commenter la réponse de Phil54110
cs_Le Pivert 5180 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 20 juin 2018 Dernière intervention - 21 nov. 2017 à 11:34
0
Merci
J'ai ajouté car pas déclaré:

Dim c


cela fonctionne avec office 2007

là je ne sais pas n'ayant pas 2016!
Commenter la réponse de cs_Le Pivert
cs_MPi 3869 Messages postés mardi 19 mars 2002Date d'inscription 25 mai 2018 Dernière intervention - 21 nov. 2017 à 15:34
0
Merci
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

Commenter la réponse de cs_MPi
phil54110 - 23 nov. 2017 à 13:26
0
Merci
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.
Commenter la réponse de phil54110

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.