Execution de la macro sur plusieurs feuilles ne fonctionne pas
ClemG
-
ClemG -
ClemG -
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
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:
- Execution de la macro sur plusieurs feuilles ne fonctionne pas
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment faire un livret avec des feuilles a4 - Guide
- Bruler des feuilles de laurier - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
6 réponses
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+
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+
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 ! :)
"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 ! :)
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! :)
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! :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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