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 Sub

Merci , ç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 ^^

19excel-pratique.docx (182.06 Ko)

Bonjour,

Tu peux essayer simplement :

ActiveSheet.Range("$A$10:$DV$140").AutoFilter Field:=2, Criteria1:=Sheets("DonnéesTechniques").Range("CE3").Value

A+

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 = 28

Alors 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 Sub

Apparemment 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.PasteSpecial

Un 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:...").Value

est surement plus rapide

Rechercher des sujets similaires à "utilisation variable"