Execution de la macro sur plusieurs feuilles ne fonctionne pas

Fermé
ClemG - 31 mai 2013 à 17:47
 ClemG - 3 juin 2013 à 09:21
Bonjour à tous,

Etant débutante en macro, je rencontre le problème suivant, peut-être serez-vous en mesure de m'aider :

J'ai créé une macro "vlookup" qui me permet de remplir automatiquement un tableau selon une formule recherchev, à partir de données se trouvant dans un autre onglet et sujettes à modifications.
Cette macro est à la base située sur l'onglet "Basis", et quand je l'éxecute dans cet onglet, tout fonctionne bien.
Néanmoins, j'ai besoin que cette macro puisse aussi être éxecutée sur les autres onglets, sauf ceux nommés "PROCESS"; "Almonds ranking" et "Inno Ranking".

J'ai donc rentré le code suivant :

Sub vlookup()
Dim ws As Worksheet

For Each ws In Worksheets
If ws.Name <> "Almonds ranking" Or ws.Name <> "Inno Ranking" Or ws.Name <> "PROCESS" Then
'
' vlookup Macro
'

'
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(RC[-1],'Inno Ranking'!R[-84]:R[1048491],4,FALSE)"
Range("K85").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'Inno Ranking'!R1:R1048576,4,FALSE)"
Range("K85").Select
Selection.AutoFill Destination:=Range("K85:K89")
Range("K85:K89").Select
Range("K85").Select
Selection.AutoFill Destination:=Range("K85:L85"), Type:=xlFillDefault
Range("K85:L85").Select
Range("L85").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],'Inno Ranking'!R1:R1048576,5,FALSE)"
Selection.AutoFill Destination:=Range("L85:L89")
Range("L85:L89").Select
Sheets("Basis").Select
Range("L85").Select
Selection.AutoFill Destination:=Range("L85:M85"), Type:=xlFillDefault
Range("L85:M85").Select
Range("M85").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-3],'Inno Ranking'!R1:R1048576,3,FALSE)"
Selection.AutoFill Destination:=Range("M85:M89"), Type:=xlFillDefault
Range("M85:M89").Select
Range("N85").Select
Sheets("Inno Ranking").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 22
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 33
Sheets("Basis").Select
Range("M85").Select
Selection.AutoFill Destination:=Range("M85:N85"), Type:=xlFillDefault
Range("M85:N85").Select
Range("N85").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],'Inno Ranking'!R1:R1048576,37,FALSE)"
Range("N70").Select
Selection.Copy
Range("N85").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("N85:N89"), Type:=xlFillDefault
Range("N85:N89").Select
Range("N85").Select
Selection.AutoFill Destination:=Range("N85:O85"), Type:=xlFillDefault
Range("N85:O85").Select
Range("O85").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],'Inno Ranking'!R1:R1048576,38,FALSE)"
Selection.AutoFill Destination:=Range("O85:O89"), Type:=xlFillDefault
Range("O85:O89").Select
Range("O89").Select
Sheets("Basis").Select
Range("O85").Select
Selection.AutoFill Destination:=Range("O85:P85"), Type:=xlFillDefault
Range("O85:P85").Select
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 12
Range("P85").Select
Selection.Cut Destination:=Range("Q85")
Range("Q85").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],'Inno Ranking'!R1:R1048576,39,FALSE)"
Selection.AutoFill Destination:=Range("Q85:Q89"), Type:=xlFillDefault
Range("Q85:Q89").Select
Range("Q85").Select
Selection.AutoFill Destination:=Range("Q85:R85"), Type:=xlFillDefault
Range("Q85:R85").Select
Range("R85").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-8],'Inno Ranking'!R1:R1048576,40,FALSE)"
Selection.NumberFormat = _
"_ [$€-80C] * #,##0.0_ ;_ [$€-80C] * -#,##0.0_ ;_ [$€-80C] * ""-""??_ ;_ @_ "
Selection.NumberFormat = _
"_ [$€-80C] * #,##0.00_ ;_ [$€-80C] * -#,##0.00_ ;_ [$€-80C] * ""-""??_ ;_ @_ "
Selection.AutoFill Destination:=Range("R85:R89"), Type:=xlFillDefault
Range("R85:R89").Select
Range("R85").Select
Selection.AutoFill Destination:=Range("R85:S85"), Type:=xlFillDefault
Range("R85:S85").Select
Range("S85").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-9],'Inno Ranking'!R1:R1048576,41,FALSE)"
Selection.AutoFill Destination:=Range("S85:S89"), Type:=xlFillDefault
Range("S85:S89").Select
Range("P85").Select
ActiveCell.FormulaR1C1 = "=RC[-2]/RC[-1]"
Range("P70").Select
Selection.Copy
Range("P85").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("P85:P89"), Type:=xlFillDefault
Range("P85:P89").Select
Range("P91").Select

End If
Next

End Sub

La macro s'exécute bien sur son onglet d'"origine" ("Basis"), mais pas du tout sur les autres...
Savez-vous comment je peux procéder ?

D'avance merci pour toutes vos réponses !!!!!!!!!!
Clémentine
A voir également:

6 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
31 mai 2013 à 19:01
Bonjour,

sauf erreur de ma part, remplacez les Or par des And si vous voulez eviter les onglets cites

If ws.Name <> "Almonds ranking" And ws.Name <> "Inno Ranking" And ws.Name <> "PROCESS" Then

enlevez les ActiveWindow.ScrollColumn, pas utile.

La macro s'exécute bien sur son onglet d'"origine" ("Basis"), mais pas du tout sur les autres... une petite explication svp.

A+
0
Merci beaucoup de ta réponse ! :) je vais essayer ta solution pour les "and".

"La macro s'exécute bien sur son onglet d'"origine" ("Basis"), mais pas du tout sur les autres."

Ce que je veux dire, c'est que je souhaite que cette macro ne s'applique pas uniquement à l'onglet Basis, mais également à d'autres onglets. Seulement quand je rentre ce code, cela ne fonctionne pas, et ma macro se limite à s'appliquer à l'onglet "Basis". Comment puis-je faire pour l'étendre aux autres onglets ?

D'avance un grand merci ! :)
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
1 juin 2013 à 11:44
Re,

vous lancez cette macro avec quoi: un bouton, par le vba ou ....?????
0
Bonsoir,

Je lance cette macro en suivant le "chemin" suivant : onglet Excel "Développeur" ==> "Macros" ==> "vlookup" ==> Exécuter

Elle est aussi exécutable grâce au bouton "play" de VBA.

Merci encore de prendre du temps pour essayer de résoudre mon problème, ça m'enlèverait vraiment une grosse épine du pied! :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
2 juin 2013 à 20:08
Bonjour,

Vous pouvez parametrer une combinaison de touche pour lancer une macro.

Onglet developpeur, macro, click sur la macro, option.... (en bas a droite au dessus de annuler), choisissez une lettre ou un chiffre pour lancer cette macro avec le ou les caracteres situer a gauche de la case ou vous avez saisie votre choix, click sur ok, fermer la fenetre Macro et testez la combinaison pour voir si c'est ok. Comme cela vous pourrez lancer cette macro de n'importe ou de votre classeur
0
Génial, ça marche ! vous venez de "sauver" ma journée de travail...un très grand Merci pour votre aide ! :)
0