Incompatibilité code 2010 vs 2007

apnart

XLDnaute Occasionnel
Bonjour,

J'ai un excel avec macros en 2010 qui fonctionne parfaitement depuis des mois, que ça soit sous 2007 comme sous 2010 (et 2013 aussi). Je vuis d'ajouter un module avec 2 macros, et patatra, ça semble ne plus vouloir fonctionner sous 2007.

Mon soucis c'est que je n'ai que 2010, et que ce sont les utilisateurs de ce p'tit outil qui me remontent le pb...

Le code en question (pourtant très "simple"):
Code:
Sub ImportDesAdresses()
Application.ScreenUpdating = False                      ' Affichage des action de la macro OFF
'
On Error GoTo PasDeFichierAdresse


    FichierAdresses = "ADRESSES_FORMULAIRE.xlsx"
    OngletAdresse = "LISTE"
    
    FichierFormulaire = ThisWorkbook.Name
    OngletFormulaire = "Liste_Adresses"
'
' Affiche l'onglets Liste_Adresses
    Sheets(OngletFormulaire).Visible = True
'
' Efface les précédentes données
    Sheets(OngletFormulaire).Select
    Cells.Select
    Selection.ClearContents
    Range("A1").Select
'
' Ouverture/copie du fichier contenant les adresses
    Workbooks.Open Filename:="C:\" & FichierAdresses
    Sheets(OngletAdresse).Select
    Range("A:J").Select
    Selection.Copy
'
' Colle les données
    Windows(FichierFormulaire).Activate
    Sheets(OngletFormulaire).Select
    Range("A:J").Select
    ActiveSheet.Paste
'
' Fermeture fichier des adresses
    Windows(FichierAdresses).Activate
    Application.CutCopyMode = False
    ActiveWindow.Close
    Range("A1").Select
'
    Sheets(OngletFormulaire).Visible = False
    
' Sortie
PasDeFichierAdresse:
    Sheets("Formulaire").Select
Application.ScreenUpdating = True                      ' Affichage des action de la macro ON
End Sub
Sub AdresseDuMenu()
Application.ScreenUpdating = False                      ' Affichage des action de la macro OFF


Sheets("Liste_Adresses").Visible = True


    Dim ChoixMenuAdresse, Champ1, Champ2, Champ3, Champ4, Champ5, Champ6, Champ7, Champ8, Champ9 As String
    ChoixMenuAdresse = Sheets("Formulaire").Range("J23").Value
    
    Sheets("Liste_Adresses").Select
    Dim BoucleAdresse As Integer
    
    For BoucleAdresse = 1 To 10000
        If Cells(BoucleAdresse, 1).Value = ChoixMenuAdresse Then
            Champ1 = Cells(BoucleAdresse, 2).Value
            Champ2 = Cells(BoucleAdresse, 3).Value
            Champ3 = Cells(BoucleAdresse, 4).Value
            Champ4 = Cells(BoucleAdresse, 5).Value
            Champ5 = Cells(BoucleAdresse, 6).Value
            Champ6 = Cells(BoucleAdresse, 7).Value
            Champ7 = Cells(BoucleAdresse, 8).Value
            Champ8 = Cells(BoucleAdresse, 9).Value
            Champ9 = Cells(BoucleAdresse, 10).Value
            Sheets("Formulaire").Select
            Range("J24").Value = Champ1
            Range("J25").Value = Champ2
            Range("J26").Value = Champ3
            Range("J27").Value = Champ4
            Range("J28").Value = Champ5 & " " & Champ6
            If Champ7 <> "" Then Range("J29").Value = Champ7 Else Range("J29").Value = Range("J3").Value
            If Champ8 <> "" Then Range("J30").Value = Champ8 Else Range("J30").Value = Range("I8").Value
            If Champ9 <> "" Then Range("J31").Value = Champ9 Else Range("J31").Value = Range("J8").Value
            Exit For
        End If
        If Cells(BoucleAdresse, 1).Value = "" Then
            Sheets("Formulaire").Select
            Exit For
        End If
    Next
    
Sheets("Liste_Adresses").Visible = False
Application.ScreenUpdating = True                      ' Affichage des action de la macro ON
End Sub

Et voici l'erreur remontée :
erreur-module.jpg


Si vous avez un idée pour moi... welcome ;)

Merci d'avance,
Bruno.
 
Dernière édition:

youky(BJ)

XLDnaute Barbatruc
Re : Incompatibilité code 2010 vs 2007

Bonjour Bruno,
Peut être de faire un retour à la 1ère ligne

Sub ImportDesAdresses()
Application.ScreenUpdating = False

au lieu de
Sub ImportDesAdresses()Application.ScreenUpdating = False
Sinon rien vu de particulier
Bruno
 

Roland_M

XLDnaute Barbatruc
Re : Incompatibilité code 2010 vs 2007

bonjour

très certainement un problème d'onglet dont visible=false et une sélection sur cet onglet caché qui cause l'erreur hidden !

faire une exécution au pas à pas dans vb F8 pour voir où ça bloque !
 

apnart

XLDnaute Occasionnel
Re : Incompatibilité code 2010 vs 2007

Merci pour vos réponses rapide :D

Pour Bruno, j'ai bien fait le retour à la ligne, je ne comprends pas pourquoi ça s'est affiché comme ça ici... un pb de copier/coller sans doutes

Pour Roland, mon soucis c'est que je n'ai que 2010... et j'ai d'autres macros qui fonctionnent dans ce fichier avec d'autres onglets également cachés :(

Il y a un moyen de "tromper" mon excel pour lui dire de fonctionner comme s'il était 2007 ?
 

Roland_M

XLDnaute Barbatruc
Re : Incompatibilité code 2010 vs 2007

re

perso je ne pense pas que ce soit la version qui fait !
2003 2007 2010 . . . l'accès par une sélection à un onglet caché causera la même erreur !

il y a peut être eu une modif sur les onglets de ces fichiers exemple ici:

Workbooks.Open Filename:="C:\" & FichierAdresses
Sheets(OngletAdresse).Select
Range("A:J").Select

essais avant > Sheets(OngletAdresse).Select

de mettre visible à true !?

Sheets(OngletAdresse).visible =true
Sheets(OngletAdresse).Select
Range("A:J").Select
. . .
 

chris

XLDnaute Barbatruc
Re : Incompatibilité code 2010 vs 2007

Bonjour

A priori rien de spécifique à 2010. Par contre tes déclarations à revoir :
dans
Code:
Dim ChoixMenuAdresse, Champ1, Champ2, Champ3, Champ4, Champ5, Champ6, Champ7, Champ8, Champ9 As String
seul Champ 9 est string.

Il faut préciser le type pour chaque variable : le fait de les mettre sur une même ligne ne donne pas le type en facteur commun.
 

apnart

XLDnaute Occasionnel
Re : Incompatibilité code 2010 vs 2007

J'ai progressé, j'ai déclaré les variables lignes par ligne, et l'erreur sur le module caché, c'était en faite sur le sub ImportDesAdresses que j'avait pas déclaré les variables au début... nul que je suis.

Maintenant cette partie là fonctionne.

Par contre, sur le même excel, à la fin les gens cliquent sur un bouton, et ça génère un mail automatiquement avec lexcel lui-même en attachement en pdf, et là... dès le clic... de nouveau cata avec outlook :-(
 

apnart

XLDnaute Occasionnel
Re : Incompatibilité code 2010 vs 2007

Voilà mon code pour outlook, si vous avez des idées pour moi :confused:

Code:
Sub GénérationMail()Application.ScreenUpdating = False                      ' Affichage des action de la macro OFF


' Vérification si formulaire rempli
If Sheets("Formulaire").Cells(7, 9) <> "OK" Then
    MsgBox "Tous les champs obligatoires ne sont pas remplis", vbOKOnly + vbExclamation, "Formulaire incomplet !"
    GoTo FinProc
End If


Dim strFeuille As String
Dim Wsh, strChemin As String
Set Wsh = CreateObject("WScript.Shell")
strChemin = Wsh.SpecialFolders("Desktop") & "\"
strFeuille = "Formulaire"


If Sheets("Formulaire").Cells(51, 10) <> "" Then
    strFichier = Cells(51, 10).Value & ".pdf"   ' nom personnalisé pour le fichier
Else
    strFichier = "Demande_de_création_de_case_MCHS.pdf"
End If
'
Worksheets(strFeuille).ExportAsFixedFormat Type:=xlTypePDF, Filename:=strChemin & strFichier, Quality:=xlQualityStandard, _
 IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


Dim OutApp, OutMail, AutoCC As Object
Dim strBody, strTO, strCC, SujetMail As String
    
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
Set AutoCC = OutApp.GetNamespace("MAPI").CurrentUser


'strTO = "bruno.ouin@hp.com"             ' Adresse Bruno pour test
strTO = "Support.Client.FR@hp.com"      ' Adresse support client Tunis
strCC = AutoCC                          ' Met en copie l'expéditeur du mail


If Sheets("Formulaire").Cells(51, 10) <> "" Then
    SujetMail = "Demande de création de case : " & Cells(51, 10).Value   ' personnalisation du sujet
Else
    SujetMail = "Demande de création de case : " & Sheets("Formulaire").Cells(58, 10)
End If
'
strBody = "<FONT face=Calibri><FONT size=3>"
strBody = strBody & "Madame, Monsieur,<BR><BR>"
strBody = strBody & "Veuillez trouver ci-après une demande de création de case :" & "<BR><BR>"
'
strBody = strBody & "<big><b><u><font color=red>Instructions pour le CCR" & "</big></b></u><BR></font>"
strBody = strBody & "<BODY><TABLE BORDER CELLPADDING=5><FONT face=Calibri><FONT size=3>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Entitlement" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(54, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>" & "N° de série" & "</TD><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(18, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>" & "SAID" & "</TD><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(19, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Nombre de cases à créer" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(49, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD ROWSPAN=3 BGCOLOR=#A9F5F2>" & "Contact Client" & "</TD><TD BGCOLOR=#A9F5F2>Nom </TD><TD BGCOLOR=#CEF6F5>" & Cells(29, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>Tél</TD><TD BGCOLOR=#CEF6F5>" & Cells(30, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>email</TD><TD BGCOLOR=#CEF6F5>" & Cells(31, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD ROWSPAN=5 BGCOLOR=#F3F781>" & "Adresse d'intervention" & "</TD><TD BGCOLOR=#F3F781>Société </TD><TD BGCOLOR=#F2F5A9>" & Cells(24, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>Adresse L1</TD><TD BGCOLOR=#F2F5A9>" & Cells(25, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>Adresse L2</TD><TD BGCOLOR=#F2F5A9>" & Cells(26, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>Adresse L3</TD><TD BGCOLOR=#F2F5A9>" & Cells(27, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>Code postal & Ville</TD><TD BGCOLOR=#F2F5A9>" & Cells(28, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>" & "Intervenant" & "</TD><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(46, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>" & "Date & heure souhaitée" & "</TD><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(45, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>" & "Détail de la prestation" & "</TD><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(47, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Case Type" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(56, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Order Type" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(57, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Cust Track Number" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(59, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Case Title" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(58, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>" & "Action CCR" & "</TD><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(60, 10).Value & "</TD></TR>"
'strBody = strBody & "<TR><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(60, 10).Value & "</TD></TR>"
strBody = strBody & "</FONT></BODY><BR><BR>"
'
strBody = strBody & "<big><b><u><font color=red>Instructions pour le Dispatch" & "</big></b></u><BR></font>"
strBody = strBody & "<BODY><TABLE BORDER CELLPADDING=5><FONT face=Calibri><FONT size=3>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Intervenant" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(46, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>" & "Date & heure souhaitée" & "</TD><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(45, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Nombre de subcases à assigner" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(49, 10).Value & "</TD></TR>"
strBody = strBody & "<TR><TD BGCOLOR=#A9F5F2>" & "Détail de la prestation" & "</TD><TD COLSPAN=2 BGCOLOR=#CEF6F5>" & Cells(47, 10).Value & "</TD></TR>"
strBody = strBody & "</FONT></BODY><BR><BR>"
'
strBody = strBody & "<big><b><u><font color=red>Instructions pour l'intervenant" & "</big></b></u><BR></font>"
strBody = strBody & "<BODY><TABLE BORDER CELLPADDING=5><FONT face=Calibri><FONT size=3>"
strBody = strBody & "<TR><TD BGCOLOR=#F3F781>" & "Merci de clôturer le subcase avec le REPAIR CLASS" & "</TD><TD COLSPAN=2 BGCOLOR=#F2F5A9>" & Cells(9, 10).Value & "</TD></TR>"
strBody = strBody & "</TABLE><BR><BR>Merci au CCR de me retourner le(s) numéro(s) de case(s) créé(s),<BR>"
strBody = strBody & "</FONT></BODY><BR>"
'
strBody = strBody & "Cordialement.<BR>"
strBody = strBody & AutoCC
strBody = strBody & "</FONT></BODY>"
    
With OutMail
    .To = strTO
    .Cc = strCC
    .Bcc = ""
    .Subject = SujetMail
    .attachments.Add strChemin & strFichier
    .HTMLBody = strBody
          
    .Display    'pour visualiser le mail avant de l'envoyer
    '.Send      'sinon envoi direct (dévalidé)
End With
   
'Dim RéponseBoite As Integer
'RéponseBoite = MsgBox("Le fichier suivant a été créé : " & Chr(10) & strFichier & _
'Chr(10) & Chr(10) & "Dans ce répertoire : " & strChemin & Chr(10) & Chr(10) & _
'"Voulez-vous l'effacer ?", vbYesNo + vbQuestion + vbDefaultButton2, "Suppression ?")
'
'If RéponseBoite = vbYes Then
    Kill strChemin & strFichier
'End If
    
FinProc:


Application.ScreenUpdating = False                      ' Affichage des action de la macro OFF
End Sub
 

apnart

XLDnaute Occasionnel
Re : Incompatibilité code 2010 vs 2007

le corps du mail peu sembler un peu confus... j'ai fait un tableau html avec des couleurs et tout et tout... ça doit pas être ça les soucis, ça doit être dans le début de la déclaration outlook, mais je ne vois pas
 

apnart

XLDnaute Occasionnel
Re : Incompatibilité code 2010 vs 2007

Yes à l'instant, je savais pas qu'on pouvait faire ça comme ça.

Donc j'ai à nouveau progressé, et de nouveau, défaut de déclaration de variable... décidément.

Mon soucis maintenant c'est que comme j'ai réinstallé un pc avec office 2007, mon outlook n'est pas configuré, donc je ne sais pas si le soucis vient du manque de config ou de mon excel. Je ferai tester la semaine prochaine par des collègues.

Encore merci à vous pour vos pistes :)
 

apnart

XLDnaute Occasionnel
Re : Incompatibilité code 2010 vs 2007

Il plante sur l'export pdf, c'est peut-être pas mon outlook après tout...

sur ça :

Code:
Worksheets(strFeuille).ExportAsFixedFormat Type:=xlTypePDF, Filename:=strChemin & strFichier, Quality:=xlQualityStandard, _
 IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
 
Dernière édition:

apnart

XLDnaute Occasionnel
Re : Incompatibilité code 2010 vs 2007

Bonsoir à vous, avec un peu de retard (désolé), j'ai pu avancer grâce à vous.

- J'ai chargé le complément pour le pdf et c'est ok
- Pour outlook, ma variable "Wsh" n'était pas à "Objet", et c'était ça le soucis

Merci à vous :D
 

Statistiques des forums

Discussions
312 239
Messages
2 086 508
Membres
103 236
dernier inscrit
Menni