Utilisation de variable
Bonjour ,
J'ai une classeur qui utilise du vba pour automatiser certaine action : ici j'ai besoins de copier des données d'une cellule vers un filtre d'un tableau d'une autre feuille se qui me donne :
Sub Macro_Inventaire_2()
'
' Macro_Inventaire_2 Macro
' Sauvergade l'inventaire sur le fichier Données Tech.
'
Selection.Copy
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveSheet.Range("$A$10:$DV$140").AutoFilter Field:=2, Criteria1:= _
"P200000"
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 = 22
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 28
Range("CC3").Select
Application.CutCopyMode = False
Selection.Copy
Range("BJ11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("CD3").Select
Application.CutCopyMode = False
Selection.Copy
Range("BI11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Inventaire Kanban").Select
Range("L2:S2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("DonnéesTechniques").Select
Range("BR11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Inventaire Kanban").Select
Range("D14:I14").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("DonnéesTechniques").Select
Range("BK11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
Tout fonctionne très bien SAUF que le critère du filtre ici "P200000" doit être variable ( demain se sera P564878 par exemple) j'aimerai donc utiliser une variable comme critère, car quand j'enregistre la macro Excel considère le texte et non pas la cellule qui le contient, j'ai donc essayer ceci :
Dim code_article_inventaire As Range
Set code_article_inventaire = Sheets ("DonnéesTechniques")Range("CE3").Select
mais je ne sais comment l’intégrer dans mon code et surtout si le code fonctionne ...
Merci d'avance
Bonjour,
Et en faisant quelque chose comme ça? (si on suppose que la valeur à filtrer est en A1)
Sub Macro_Inventaire_2()
'
' Macro_Inventaire_2 Macro
' Sauvergade l'inventaire sur le fichier Données Tech.
Dim Filtre As String
Filtre = Str(Range("A1").Value)
'
Selection.Copy
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveSheet.Range("$A$10:$DV$140").AutoFilter Field:=2, Criteria1:= _
Filtre
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 = 22
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 28
Range("CC3").Select
Application.CutCopyMode = False
Selection.Copy
Range("BJ11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("CD3").Select
Application.CutCopyMode = False
Selection.Copy
Range("BI11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Inventaire Kanban").Select
Range("L2:S2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("DonnéesTechniques").Select
Range("BR11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Inventaire Kanban").Select
Range("D14:I14").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("DonnéesTechniques").Select
Range("BK11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End SubMerci , ça me renvoie "erreur d’exécution 13 erreur de type"
La cellule contient des données texte et nombre c'est peut être la cause du problème non ? .
j'ai essayer avec: Dim Filtre As Variant
Filtre = Str(Range("CE3").Value)
mais l'erreur reste la même ...
Bon appétit ^^
Bonjour,
Tu peux essayer simplement :
ActiveSheet.Range("$A$10:$DV$140").AutoFilter Field:=2, Criteria1:=Sheets("DonnéesTechniques").Range("CE3").ValueA+
bonjour
quand vous enregistrez une macro, toutes les étapes et les opérations nécessaires à la réalisation de travail que vous souhaitez faire sont enregistrées par l'enregistreur de macro même si sont simples comme défiler la fenêtre du classeur
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 4
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 = 22
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 28Alors vous pouvez effacer lignes inutiles
Sub Macro_Inventaire_2()
'
' Macro_Inventaire_2 Macro
' Sauvergade l'inventaire sur le fichier Données Tech.
'
Selection.Copy
ActiveSheet.Range("$A$10:$DV$140").AutoFilter Field:=2, Criteria1:=Sheets("DonnéesTechniques").Range("CE3").Value
Range("CC3").Select
Application.CutCopyMode = False
Selection.Copy
Range("BJ11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("CD3").Select
Application.CutCopyMode = False
Selection.Copy
Range("BI11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Inventaire Kanban").Select
Range("L2:S2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("DonnéesTechniques").Select
Range("BR11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Inventaire Kanban").Select
Range("D14:I14").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("DonnéesTechniques").Select
Range("BK11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End SubApparemment vous copier que les valeurs et les formats des plages vous intéressent pas , je pense que l utilisation des codes comme
Range ("BI11:...").Value = Range ("CD3:...").Value serai plus rapide que
Selection.Copy
Selection.PasteSpecialUn fichier joint avec la demande fait gagner du temps à tout le monde, sans Un fichier joint Je pense tu peux envoyer un extrait de ton fichier avec la présentation qui vous intéresse maintenant et vous effacer ou anonymiser toutes autres données.
Problème résolue !!
Amir , je ne pense pas que la méthode:" Range ("BI11:...").Value = Range ("CD3:...").Value " fonctionne car les cellules où les données sont copiés sont amenées a changer donc les données de toutes mes cellules ayant déjà utilisée la macron changeront a chaque exécution de la macro avec des valeurs differentes, non ?
Merci a tous pour votre efficacité
Tres cordialement
bonjour
la methode "copy paste " et relativement lente, sans un fichier joint Je ne peut pas vous assurer si tu peux envoyer un extrait de ton fichier avec la présentation qui vous intéresse je vai essaye . mais l utilisation de la methode comme
Range ("BI11:...").Value = Range ("CD3:...").Valueest surement plus rapide