Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplacer Chr(10) et Chr(34) lorsqu'il y a des références manqua nt

1 réponse
Avatar
Alex St-Pierre
Bonjour,
J'ai un programme qui ouvre et ferme les librairies de Word. Si les
librairies sont restées ouvertes et que le fichier est ouvert sur une autre
version de Office, ça me créé des références manquantes et VBA ne reconnait
plus rien. Ex: Chr(10) n'est pas reconnu. Si l'utilisateur clique "Faire
confiance au projet VBA", je suis en mesure d'aller effacer les références
manquantes et donc, toutes les fonctions sont reconnus (plus de message
d'erreur).

A l'ouverture du formulaire, je fais un test pour m'assurer qu'il n'y a pas
de références manquantes. Si l'utilisateur n'a pas cliqué "Faire confiance au
projet VBA", je veux lui expliquer comment faire. Comment est-ce que je peux
formater le msgbox correctement sans utiliser les fonctions Chr(10) et
Chr(34) qui ne sont pas reconnus (puisque librairies manquantes) ? Le MsgBox
de IsWordRef_PartB est beaucoup plus beau avec les Chr(10). Existe-t-il un
VbEnter ou autre qui fonctionne avec référence manquante.
Merci!
Alex

Sub MS_Report() 'Ctrl R
If Not IsWordRef("NotUsed") Then Exit Sub 'Ensure the Word library is open
Call MS_Report_PartB("NotUsed")
End Sub

Function IsWordRef(NotUsed As Variant) As Boolean

Dim Ref As Object
Dim refs As Object
Dim sID As String

IsWordRef = False

On Error Resume Next
Set refs = ThisWorkbook.VBProject.References
If refs Is Nothing Then
MsgBox "With regard to Report Generator, change your security
settings so that program can access your VBA code." & _
"Follow these steps to change your security settings:" & _
"1. Open the Tools menu from Excel’s main menu" & vbenter & _
"2. Click on Macro and then on Security …" & _
"3. When the Security dialog box opens, click on the Trusted
Sources tab" & _
"4. Check the Trust access to Visual Basic project check box" & _
"5. Click on OK" & _
"En regard du Générateur de rapport, vous devez changer votre
niveau de sécurité pour que le programme puisse accéder au code VBA." & _
"Suivre ces étapes pour changer le niveau de écurité:" & _
"1. Ouvrir le menu Outils à partir du menu principal d'Excel" & _
"2. Cliquer sur Macro et ensuite sur Sécurité …" & _
"3. Quand la boite de dialogue Sécurité s'ouvre, cliquer sur
l'onglet Éditeurs approuvés" & _
"4. Cocher la case Faire confiance au projet Visual Basic" & _
"5. Cliquer sur OK", , "Need to change security settings"
Exit Function
End If
On Error GoTo 0

IsWordRef = IsWordRef_PartB("NotUsed")

End Function

Function IsWordRef_PartB(NotUsed As Variant) As Boolean

Dim Ref As Object
Dim refs As Object
Dim sID As String

IsWordRef_PartB = False

On Error Resume Next
Set refs = ThisWorkbook.VBProject.References
If refs Is Nothing Then
MsgBox "With regard to " & Chr(34) & "Report Generator" & Chr(34) &
", change your security settings so that program can access your VBA code." &
Chr(10) & _
"Follow these steps to change your security settings:" & Chr(10)
& _
"1. Open the Tools menu from Excel’s main menu" & Chr(10) & _
"2. Click on Macro and then on Security …" & Chr(10) & _
"3. When the " & Chr(34) & "Security" & Chr(34) & " dialog box
opens, click on the " & Chr(34) & "Trusted Sources" & Chr(34) & " tab" &
Chr(10) & _
"4. Check the " & Chr(34) & "Trust access to Visual Basic
project" & Chr(34) & " check box" & Chr(10) & _
"5. Click on OK" & Chr(10) & Chr(10) & _
"En regard du " & Chr(34) & "Générateur de rapport" & Chr(34) &
", vous devez changer votre niveau de sécurité pour que le programme puisse
accéder au code VBA." & Chr(10) & _
"Suivre ces étapes pour changer le niveau de écurité:" & Chr(10)
& _
"1. Ouvrir le menu Outils à partir du menu principal d'Excel" &
Chr(10) & _
"2. Cliquer sur Macro et ensuite sur Sécurité …" & Chr(10) & _
"3. Quand la boite de dialogue " & Chr(34) & "Sécurité" &
Chr(34) & " s'ouvre, cliquer sur l'onglet " & Chr(34) & "Éditeurs approuvés"
& Chr(34) & Chr(10) & _
"4. Cocher la case " & Chr(34) & "Faire confiance au projet
Visual Basic" & Chr(34) & Chr(10) & _
"5. Cliquer sur OK", , "Need to change security settings"
Exit Function
End If
On Error GoTo 0
For Each Ref In refs 'Remove missing references
If Ref.isbroken = True Then
refs.Remove Ref
End If
Next
sID = "{00020905-0000-0000-C000-000000000046}" 'Word
If Len(sID) = 0 Then Exit Function
For Each Ref In refs
If Ref.GUID = sID Then
IsWordRef_PartB = True
Exit Function
End If
Next

On Error GoTo errH

refs.AddFromGuid sID, 0, 0
IsWordRef_PartB = True

Exit Function
errH:
MsgBox "Error setting reference to Word"

End Function
--
Alex St-Pierre

1 réponse

Avatar
isabelle
bonjour Alex,

voir dans l'aide à "Constantes diverses"

vbCrLf
Chr(13) + Chr(10)
Combinaison des caractères de retour chariot et de saut de ligne

vbCr
Chr(13)
Caractère de saut de paragraphe

vbLf
Chr(10)
Caractère de saut de ligne

vbNewLine
Chr(13) + Chr(10) ou, sur Macintosh, Chr(13)
Caractère de saut de ligne spécifique à la plate-forme ;choix en fonction de la plate-forme

isabelle


Bonjour,
J'ai un programme qui ouvre et ferme les librairies de Word. Si les
librairies sont restées ouvertes et que le fichier est ouvert sur une autre
version de Office, ça me créé des références manquantes et VBA ne reconnait
plus rien. Ex: Chr(10) n'est pas reconnu. Si l'utilisateur clique "Faire
confiance au projet VBA", je suis en mesure d'aller effacer les références
manquantes et donc, toutes les fonctions sont reconnus (plus de message
d'erreur).

A l'ouverture du formulaire, je fais un test pour m'assurer qu'il n'y a pas
de références manquantes. Si l'utilisateur n'a pas cliqué "Faire confiance au
projet VBA", je veux lui expliquer comment faire. Comment est-ce que je peux
formater le msgbox correctement sans utiliser les fonctions Chr(10) et
Chr(34) qui ne sont pas reconnus (puisque librairies manquantes) ? Le MsgBox
de IsWordRef_PartB est beaucoup plus beau avec les Chr(10). Existe-t-il un
VbEnter ou autre qui fonctionne avec référence manquante.
Merci!
Alex

Sub MS_Report() 'Ctrl R
If Not IsWordRef("NotUsed") Then Exit Sub 'Ensure the Word library is open
Call MS_Report_PartB("NotUsed")
End Sub

Function IsWordRef(NotUsed As Variant) As Boolean

Dim Ref As Object
Dim refs As Object
Dim sID As String

IsWordRef = False

On Error Resume Next
Set refs = ThisWorkbook.VBProject.References
If refs Is Nothing Then
MsgBox "With regard to Report Generator, change your security
settings so that program can access your VBA code." & _
"Follow these steps to change your security settings:" & _
"1. Open the Tools menu from Excel’s main menu" & vbenter & _
"2. Click on Macro and then on Security …" & _
"3. When the Security dialog box opens, click on the Trusted
Sources tab" & _
"4. Check the Trust access to Visual Basic project check box" & _
"5. Click on OK" & _
"En regard du Générateur de rapport, vous devez changer votre
niveau de sécurité pour que le programme puisse accéder au code VBA." & _
"Suivre ces étapes pour changer le niveau de écurité:" & _
"1. Ouvrir le menu Outils à partir du menu principal d'Excel" & _
"2. Cliquer sur Macro et ensuite sur Sécurité …" & _
"3. Quand la boite de dialogue Sécurité s'ouvre, cliquer sur
l'onglet Éditeurs approuvés" & _
"4. Cocher la case Faire confiance au projet Visual Basic" & _
"5. Cliquer sur OK", , "Need to change security settings"
Exit Function
End If
On Error GoTo 0

IsWordRef = IsWordRef_PartB("NotUsed")

End Function

Function IsWordRef_PartB(NotUsed As Variant) As Boolean

Dim Ref As Object
Dim refs As Object
Dim sID As String

IsWordRef_PartB = False

On Error Resume Next
Set refs = ThisWorkbook.VBProject.References
If refs Is Nothing Then
MsgBox "With regard to " & Chr(34) & "Report Generator" & Chr(34) &
", change your security settings so that program can access your VBA code." &
Chr(10) & _
"Follow these steps to change your security settings:" & Chr(10)
& _
"1. Open the Tools menu from Excel’s main menu" & Chr(10) & _
"2. Click on Macro and then on Security …" & Chr(10) & _
"3. When the " & Chr(34) & "Security" & Chr(34) & " dialog box
opens, click on the " & Chr(34) & "Trusted Sources" & Chr(34) & " tab" &
Chr(10) & _
"4. Check the " & Chr(34) & "Trust access to Visual Basic
project" & Chr(34) & " check box" & Chr(10) & _
"5. Click on OK" & Chr(10) & Chr(10) & _
"En regard du " & Chr(34) & "Générateur de rapport" & Chr(34) &
", vous devez changer votre niveau de sécurité pour que le programme puisse
accéder au code VBA." & Chr(10) & _
"Suivre ces étapes pour changer le niveau de écurité:" & Chr(10)
& _
"1. Ouvrir le menu Outils à partir du menu principal d'Excel" &
Chr(10) & _
"2. Cliquer sur Macro et ensuite sur Sécurité …" & Chr(10) & _
"3. Quand la boite de dialogue " & Chr(34) & "Sécurité" &
Chr(34) & " s'ouvre, cliquer sur l'onglet " & Chr(34) & "Éditeurs approuvés"
& Chr(34) & Chr(10) & _
"4. Cocher la case " & Chr(34) & "Faire confiance au projet
Visual Basic" & Chr(34) & Chr(10) & _
"5. Cliquer sur OK", , "Need to change security settings"
Exit Function
End If
On Error GoTo 0
For Each Ref In refs 'Remove missing references
If Ref.isbroken = True Then
refs.Remove Ref
End If
Next
sID = "{00020905-0000-0000-C000-000000000046}" 'Word
If Len(sID) = 0 Then Exit Function
For Each Ref In refs
If Ref.GUID = sID Then
IsWordRef_PartB = True
Exit Function
End If
Next

On Error GoTo errH

refs.AddFromGuid sID, 0, 0
IsWordRef_PartB = True

Exit Function
errH:
MsgBox "Error setting reference to Word"

End Function