Problème de compatibilité macros VBA entre 2013 et 365

Bonjour à tous,

Je viens vers vous car j'ai actuellement un soucis avec un fichier du boulot...

Je ne suis pas expert en excel et donc en macro et en VBA, la question a peut-être déjà été posée voire résolue, mais je n'ai pas trouvé sur le forum ni sur le net, donc je m'en remet à vous, vos connaissances et vos compétences

Voici mon problème :

  • mon chef utilise Excel 2013 au bureau
  • il m'a demandé de bosser sur un fichier excel
  • j'utilise office 365
  • je lui ai renvoyé ce fichier après avoir bossé dessus
  • il n'arrive pas à le lancer correctement car les macros qui sont utilisées sur ma version, ne s'ouvrent pas sur la sienne
  • il m'a fait voir qu'il devait décocher à chaque fois les bibliothèques VBA manquantes dans les références

Ma question (et la sienne également) :

Y a-t-il une manière "automatique" (macro ou autre) qui permettrait d'ouvrir les fichiers de différentes versions avec les macros à jour, sans devoir décocher à chaque fois dans les références de l'éditeur VBA ?

Si ma question n'est pas assez claire, ou explicite, n'hesitez pas à me le dire ! Je reformulerai

Merci à vous tous pour votre aide !

Mega

Bonjour

Sans voir le code difficile d'aider... mais je penses que c'est du fait des déclarations d'objets.

je conseil donc de faire des "déclarations tardives" (late binding) sur tes objets... pour plus d'information :

https://forum.excel-pratique.com/viewtopic.php?t=36929

et :

https://stackoverrun.com/fr/q/9075390

Fred

Bonjour,

Ce problème peut également survenir si votre patron a une version 64 bits d'Excel et vous une version 32 bits.

Certains objets 32 bits ne sont pas disponibles en version 64 bits, par exemple un contrôle ListView dans un UserForm.

Bonjour,

Merci pour vos réponses, désolé de répondre tardivement, j'ai été pas mal occupé...

Je te donne la macro fred2406

Sub IMPRESSION()

     'Mise en page avant impression

With ActiveSheet.PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
     'Selection plage impression et impression

Range("A1:P78").Select
Selection.PrintOut Copies:=1

Sheets("TEMP").Activate

Dim olApp As Outlook.Application
Dim olMail As MailItem
Dim CurFile As String
Set olApp = New Outlook.Application
Set olMail = olApp.CreateItem(olMailItem)

             ' "C:\Users\***\AppData\Local\Temp\Fiche demande.pdf "

CurFile = ThisWorkbook.Path & "\" & "***.Pdf"

With ActiveSheet.PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
ActiveSheet.PageSetup.PrintArea = "$A$1:$P$78"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CurFile, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
With olMail

.To = "***@***"

'.CC = "***@***"

.Subject = "***"

.Body = "Bonjour," & Chr(10) & "***." & Chr(10) & "Cdt" & Chr(10) & "***"
.Attachments.Add CurFile
             '.Attachments.Add "c:\My Documents\book.doc"
'.Display 'affiche message
.Send 'envoi message directement
End With
             'MsgBox "Merci de vérifier que le message apparait dans -messages envoyés- dans votre messagerie OUTLOOK."
             ' Effacer les variables objets
Set olMail = Nothing
Set olApp = Nothing
Sheets("ACCUEIL").Activate
ActiveWorkbook.Save

End Sub

La partie qui bug est celle-ci :

Sheets("TEMP").Activate

Dim olApp As Outlook.Application
Dim olMail As MailItem
Dim CurFile As String
Set olApp = New Outlook.Application

J'ai bien essayé de une faire une liaision tardive, mais sans grand succès...

thev, les versions sont identiques..

Merci de votre aide

Bonjour à tous,

- il m'a fait voir qu'il devait décocher à chaque fois les bibliothèques VBA manquantes dans les références

Il serait également intéressant de connaître la liste de ces bibliothèques manquantes.

ric

Bonjour ric,

Oui j’ai oublié de la mettre dans le message..

En fait il n’y en a qu’une...

C’est Microsoft Outlook Library 16.0

Bonjour,

Un essai ...

Mais avant, va dans les références > décoche "Microsoft Outlook Library 16.0".

Enregistre le fichier.

Ferme Excel.

Rouvre ton fichier et teste l'envoi.

Il est préférable que "Microsoft Outlook" soit ouvert.

Codé ainsi, ça devrait être transparent sur l'autre machine.

   'Mise en page avant impression

   With ActiveSheet.PageSetup
      .Zoom = False
      .FitToPagesWide = 1
      .FitToPagesTall = 1
   End With
   'Selection plage impression et impression

   Range("A1:P78").Select
   Selection.PrintOut Copies:=1

   Sheets("TEMP").Activate

   Dim olApp As Object
   Dim OItem As Object
   Dim olMail As Object
   Dim CurFile As String

   Set olApp = CreateObject("Outlook.Application")
   Set olMail = olApp.CreateItem(olMailItem)

   ' "C:\Users\***\AppData\Local\Temp\Fiche demande.pdf "

''' le reste du code est identique 

ric

Merci du coup de main Ric !

J’essaye aujourd’hui et je te tiens au courant !

Rechercher des sujets similaires à "probleme compatibilite macros vba entre 2013 365"