Downgrade macro Excel 2010 vers 2000

John38

XLDnaute Nouveau
Bonjour,

J'ai créer un fichier sur Excel 2010 comportant des macros. Le problème c'est que dans mon entreprise, il existe deux versions d'Excel le 2010 et le 2000. Je voulais savoir si il existait un logiciel permettant de convertir mes macros ?

Je vous remercie par avance de vos réponses.
 

pijaku

XLDnaute Occasionnel
Re : Downgrade macro Excel 2010 vers 2000

Bonjour,

Je ne pense pas qu'il existe ce genre de logiciel. Cependant, une macro peut être adaptée pour fonctionner sur toutes versions [avec une nuance pour Excel97 qui commence à se faire vraiment vieux...].
Si tu le souhaites, nous pouvons peut être te faire cela. Pour ça, il nous faut, à minima, le code de ta(tes) macro(s) ainsi que les quelques lignes qui bloquent.
Cordialement,
Franck
 

pijaku

XLDnaute Occasionnel
Re : Downgrade macro Excel 2010 vers 2000

Mais par contre je ne peux pas vous envoyer le fichier.
Je comprends. S'il y a des éléments confidentiels (nombreux) il n'est pas toujours aisé de les remplacer.

Sa serait bon ?
Sans voir, je ne peux pas te promettre.
Par contre, on va au moins essayer avec tous les éléments dont nous pourrons disposer.

Je peux vous copier les macros et ce qui bloquent
Vas y envoie, on verra bien!
 

John38

XLDnaute Nouveau
Re : Downgrade macro Excel 2010 vers 2000

Sub pieces_generales()
'
Sheets("Calculs").Select
Range("A17:E67").Select
Selection.ClearContents
Range("A1").Select
Sheets("Piece detachees").Select
Range("A2:A52").Select
Selection.Copy
Sheets("Calculs").Select
Range("E17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Piece detachees").Select
Range("B2:B52").Select
Selection.Copy
Sheets("Calculs").Select
Range("A17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Piece detachees").Select
Range("E2:E52").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Calculs").Select
Range("B17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Piece detachees").Select
Range("G2:G52").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Calculs").Select
Range("C17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Piece detachees").Select
Range("I2:I52").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Calculs").Select
Range("D17").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A17:D56").Select
Application.CutCopyMode = False
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Range("B17:D36").Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A15").Select
Sheets("Piece detachees").Select
Range("A1").Select
Sheets("Calculs").Select
End Sub

Sa commence à buger là
 

pijaku

XLDnaute Occasionnel
Re : Downgrade macro Excel 2010 vers 2000

Bon... Et bien on n'est pas sorti du sable... (je plaisante).

1- TintAndShade = 0 ==> ligne inutile, on supprime !
Extrait de l'aide VBA pour cette propriété :
Cette propriété renvoie ou définit un objet de type Single qui éclaircit ou assombrit la couleur d'une forme spécifiée. En lecture-écriture.
expression.TintAndShade
expression Obligatoire. Expression qui renvoie un des objets répertoriés dans la liste S'applique à.
Note
Vous pouvez entrer un nombre compris entre -1 (le plus sombre) et 1 (le plus clair) pour la propriété TintAndShade, 0 (zéro) étant neutre
.

Tous tes select sont inutiles. J'ai déjà commencé à simplifier ton code :

Code:
Option Explicit

Sub pieces_generales()
'
Sheets("Piece detachees").Select
With Sheets("Calculs")
    .Range("A17:E67").ClearContents
    Sheets("Piece detachees").Range("A2:A52").Copy
    .Range("E17").PasteSpecial Paste:=xlPasteValues
    Sheets("Piece detachees").Range("B2:B52").Copy
    .Range("A17").PasteSpecial Paste:=xlPasteValues
    Sheets("Piece detachees").Range("E2:E52").Copy
    .Range("B17").PasteSpecial Paste:=xlPasteValues
    Sheets("Piece detachees").Range("G2:G52").Copy
    .Range("C17").PasteSpecial Paste:=xlPasteValues
    Sheets("Piece detachees").Range("I2:I52").Copy
    .Range("D17").PasteSpecial Paste:=xlPasteValues
    With .Range("A17:D56")
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeLeft).Weight = xlThin
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).Weight = xlThin
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlEdgeRight).Weight = xlThin
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideVertical).Weight = xlThin
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).Weight = xlThin
    End With
    With .Range("B17:D36")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
End With
Sheets("Piece detachees").Select
Range("A1").Select
Sheets("Calculs").Select
Range("A15").Select
End Sub
Essaye pour voir.
 

John38

XLDnaute Nouveau
Re : Downgrade macro Excel 2010 vers 2000

Je te remercie tout marche correctement, j'ai enlevé pour mes autres macros Tintandshade et elle marche. Je me demandais si sa sert par à grand chose cette fonction...je peux l'enlever de mon fichier version 2010 non ?
 
Dernière édition:

pijaku

XLDnaute Occasionnel
Re : Downgrade macro Excel 2010 vers 2000

En revanche j'ai quelques bugs sur mes fonctions comme Somme.si.ens ou nb.si.ens
Ben oui... Ces formules n'existent que depuis la version 2007... Tu pourrais peut être les remplacer, Somme.Si.Ens par exemple peut être remplacée par une formule SOMMEPROD()

j'avais créer une macro qui enregistrait certaines pages sous .pdf. Sur excel 2000, il me semble que c'est impossible car il gère par les pdf non ?
Pas nécessairement. Il y a deux manières d'enregistrer en pdf. Soit directement grâce aux versions récentes d'Excel, soit en utilisant une imprimante pdf virtuelle.
Par exemple, ce code de macro fonctionne avec les deux versions excel :
Code:
Sub SavePageEnCoursEnPdf()
Dim Imprimante
Imprimante = Application.ActivePrinter
Application.ActivePrinter = "Adobe PDF sur Ne38:" 'A ADAPTER SELON VOTRE IMPRIMANTE PDF
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.ActivePrinter = Imprimante
End Sub
 

John38

XLDnaute Nouveau
Re : Downgrade macro Excel 2010 vers 2000

Le problème du SOMMEPROD() il me semble qu'on peut addtionner que gauche à droite.
Moi je dois faire une formule de ce genre =SOMMEPROD(($D$2:$D$132="lulu")*($M$2:$M$132="bubu")*($H$2:$H$132))
Vue que je passe par la colonne D puis M et je reviens par H, Excel comprend pas.

Je viens de me rendre compte qu'une macro marchait mal, elle s'excute sans mettre d'erreur.
J'ai 3 fichiers excel extrait d'un logiciel et je récupère ces informations sur mon fichier excel principal pour calculer. J'ai fait une feuille par extraction. J'ai créé une macro qui commence à suprimer les antécédents sauf les cases A1 à G1, puis je tire de A1 à G477.

Le problème c'est que j'ai l'impression que les données précédentes ne se sont pas supprimées car elles sont encore là. Pourtant, quand je tire moi même sa fait la même chose. J'ai bien vérifié mes fichiers sources, ces données ne sont pas présentes.

Mon code :

Sub Extraction_******()
'

Sheets("*****").Select
Range("A2:G477").Select
Selection.ClearContents
Range("A1").Select
Selection.AutoFill Destination:=Range("A1:G1"), Type:=xlFillDefault
Range("A1:G1").Select
Selection.AutoFill Destination:=Range("A1:G477"), Type:=xlFillDefault
Range("A1:G477").Select
Range("A1").Select
Sheets("******").Select
End Sub
 

pijaku

XLDnaute Occasionnel
Re : Downgrade macro Excel 2010 vers 2000

Le problème du SOMMEPROD() il me semble qu'on peut addtionner que gauche à droite.
Moi je dois faire une formule de ce genre =SOMMEPROD(($D$2:$D$132="lulu")*($M$2:$M$132="bubu ")*($H$2:$H$132))
Vue que je passe par la colonne D puis M et je reviens par H, Excel comprend pas.

Pas de souci, Excel comprends très bien et va te donner le résultat attendu. T'inquiète...

Le problème c'est que j'ai l'impression que les données précédentes ne se sont pas supprimées car elles sont encore là
Soluce 1 :
Ratisse plus large :
Code:
Sub Extraction_******()
Sheets("*****").Range("A2:Z5000").ClearContents
Range("A1").AutoFill Destination:=Range("A1:G1"), Type:=xlFillDefault
Range("A1:G1").AutoFill Destination:=Range("A1:G477"), Type:=xlFillDefault
Range("A1").Select
End Sub
Soluce 2 :
Soit plus "violent" :
Code:
Range("A2:G477").Delete Shift:=xlUp
ou
Code:
Sheets("*****").Range("A2:G477").Clear
Soluce 3 :
Mélange les soluces 1 & 2 :
Code:
Sheets("*****").Range("A2:Z5000").Clear
 

John38

XLDnaute Nouveau
Re : Downgrade macro Excel 2010 vers 2000

Pour ce qui est de somme prod il me donne N/A sur l'exemple que j'ai donné. Je vois pas d'où peut venir l'erreur.

Les lignes nouvelles lignes de code pour effacer ne changent rien. On dirait comme si il y avait des choses invisibles écrites sur les fichiers que je récupère. Même à la main sa fait la même chose. Pourtant dans le 2010 sa fonctionne correctement.
 
Dernière édition:

pijaku

XLDnaute Occasionnel
Re : Downgrade macro Excel 2010 vers 2000

1- pour les #N/A : Ce lien n'existe plus

2- Les lignes nouvelles lignes de code pour effacer ne changent rien. On dirait comme si il y avait des choses invisibles écrites sur les fichiers que je récupère. Même à la main sa fait la même chose. Pourtant dans le 2010 sa fonctionne correctement.
Là malheureusement, sans un exemple de fichier, je ne peux rien...
 

Discussions similaires

Réponses
2
Affichages
328

Statistiques des forums

Discussions
312 488
Messages
2 088 847
Membres
103 972
dernier inscrit
steeter