VBA : forcer la valeur a 0

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Soleil11

XLDnaute Occasionnel
Bonjour le forum,

J'ai besoin de votre aide en VBA pour l'automatisation d'une tâche, j'aimerais filter ma colonne A en (contains: "IUUC") ce qui est fait ci-dessous le code. La deuxième étape serait de forcer toutes les cellules de ma colonne B pour qu'il affiche le nombre "0" mais sans défaire le premier filtre.

Sub test ()

Sheets("Data").Activate
Selection.AutoFilter

ActiveSheet.Range("$A$1:$AI$65000").AutoFilter Field:=4, Criteria1:= _
"=*IUUC*", Operator:=xlAnd

End sub.

Mes connaissance VBA sont limitées donc je fais appel à vous.

Merci d'avances.

Soleil11😕
 
Re : VBA : forcer la valeur a 0

Bonjour Soleil11, le forum,
Pas façile de comprendre sans exemple...
Pour remplir la colonne B avec des 0 en face des cellules contenant IUUC:
Code:
[COLOR=blue]Sub[/COLOR] test()
Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Data")
    Lrow = .Cells(Rows.Count, "A").End(xlUp).Row
    [COLOR=blue]For Each[/COLOR] c [COLOR=blue]In[/COLOR] .Range(Cells(1, 1), Cells(Lrow, 1))
        [COLOR=blue]If[/COLOR] c.Value [COLOR=blue]Like[/COLOR] "*" & "IUUC" & "*" [COLOR=blue]Then[/COLOR] c.Offset(0, 1) = 0
    [COLOR=blue]Next[/COLOR] c
    .Range(Cells(1, 1), Cells(Lrow, 2)).AutoFilter Field:=1, Criteria1:="=*IUUC*"
[COLOR=blue]End With[/COLOR]
Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Pour remplir toute la colonne B:
Code:
[COLOR=blue]Sub[/COLOR] test2()
Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Data")
    Lrow = .Cells(Rows.Count, "A").End(xlUp).Row
    .Range(Cells(1, 2), Cells(Lrow, 2)) = 0
    .Range(Cells(1, 1), Cells(Lrow, 2)).AutoFilter Field:=1, Criteria1:="=*IUUC*"
[COLOR=blue]End With[/COLOR]
Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 
Re : VBA : forcer la valeur a 0

Bonjour Soleil11, Efgé,

Essaye la syntaxe suivante, en considérant que la zone de travail comprend les colonnes A à E.

Sub test()
Dim Derlig As Long
With Sheets("Data")
.Activate
Derlig = .Range("A65536").End(xlUp).Row
If .AutoFilterMode = False Then
.Range("A1😀1").AutoFilter
End If
.Range("$A$1:$AI$65000").AutoFilter Field:=4, Criteria1:="=*IUUC*", Operator:=xlAnd
.Range("B2:B" & Derlig).SpecialCells(xlCellTypeVisible) = 0
.AutoFilterMode = False
End With
End Sub
 
Re : VBA : forcer la valeur a 110

Bonjour le Forum,

Merci cela fonctionne super bien.

Merci d'avance.

Soleil11

****************

Bonjour le forum,

Toujours dans le même sujet, j'ai essayé de modifier le code que m'avez donner en ajoutant deux critère de filtre mais cela n'a pas l'aire de trop marché.

Voila ou je bloque : If c.Value Like "SelValue1" And "SelValue2" Then
c.Offset(0, 4) = 110

Après avoir selectionner le filtre j'aimerais qu'il force la valeur à 110 dans la colonne "T". Ci-dessous le code que j'ai essayé de modifier et j'ai attaché un fichier.


Sub Force_valueto110()

Dim SelValue1 As String
Dim SelValue2 As String
Dim SelValue3 As String
Dim SelValue4 As String

SelValue1 = "04 Standard hours"
SelValue2 = "05 Plan Intervention"


Sheets("Data2").Activate


Application.ScreenUpdating = False

With Sheets("Data2")

Lrow = .Cells(Rows.Count, "P").End(xlUp).Row
For Each c In .Range(Cells(1, 16), Cells(Lrow, 16))
If c.Value Like "SelValue1" And "SelValue2" Then
c.Offset(0, 4) = 110


Next c
.Range(Cells(1, 16), Cells(Lrow, 1)).AutoFilter Field:=1, Criteria1:=Array( _
SelValue1, SelValue2), Operator:=xlFilterValues
End With
Application.ScreenUpdating = False



End Sub

Merci pour votre aide encore.

Soleil😕
 

Pièces jointes

Re : VBA : forcer la valeur a 0

Bonjour Soleil11, au fil,
Une proposition avec ce que j'ai compris :
Code:
[COLOR=blue]Sub[/COLOR] Force_valueto110()
[COLOR=blue]Dim[/COLOR] SelValue1 [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] SelValue2 [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] SelValue3 [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] SelValue4 [COLOR=blue]As String[/COLOR]
SelValue1 = "04 Standard hours"
SelValue2 = "05 Plan Intervention"
Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Data2")
    Lrow = .Cells(Rows.Count, "P").End(xlUp).Row
    [COLOR=blue]For Each[/COLOR] c [COLOR=blue]In[/COLOR] .Range(Cells(1, 16), Cells(Lrow, 16))
        [COLOR=blue]If[/COLOR] c.Value = SelValue1 [COLOR=blue]Or[/COLOR] c.Value = SelValue2 [COLOR=blue]Then[/COLOR] c.Offset(0, 4) = 110
    [COLOR=blue]Next[/COLOR] c
    .Range(Cells(1, 16), Cells(Lrow, 16)).AutoFilter Field:=1, Criteria1:="=" & SelValue1, Operator _
        :=xlOr, Criteria2:="=" & SelValue2
[COLOR=blue]End With[/COLOR]
Application.ScreenUpdating = [COLOR=blue]True[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 
Re : VBA : forcer la valeur a 0

Re à tous,
Après tests sous 2007 on peut utiliser ceci pour le filtre :
Code:
.Range(Cells(1, 16), Cells(Lrow, 16)).AutoFilter Field:=1, Criteria1:=Array(SelValue1, SelValue2, SelValue3, SelValue4), Operator:=xlFilterValues
Cordialement
 
Re : VBA : forcer la valeur a 0

Bonsoir


Sinon à part le filtre automatique, il y a aussi le filtre élaboré
(qui comme son nom l'indique promet plus que de l'automatique 😉)

Bonjour le forum,

j'ai essayé et cela marche très bien, j'aimerais juste modifié quelquechose en ajoutant une condition. Toujours forcer la valeur à 110 dans la colonne "T" selon les deux critères "SelValue1 Or c.Value = SelValue2" mais que si la colonne "R" est vide. Par contre si la colonne "R" contient une valeur il faudrait laisser la colonne "T" vide.

J'ai mis une pièce jointe comme exemple.

Merci encore le forum.

Soleil11😕
 

Pièces jointes

Re : VBA : forcer la valeur a 0

Bonjour Soleil11, Bonjour Staple, le forum
Code:
[COLOR=blue]Sub[/COLOR] Force_valueto110()
[COLOR=blue]Dim[/COLOR] SelValue1 [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] SelValue2 [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] SelValue3 [COLOR=blue]As String[/COLOR]
[COLOR=blue]Dim[/COLOR] SelValue4 [COLOR=blue]As String[/COLOR]
SelValue1 = "04 Standard hours"
SelValue2 = "05 Plan Intervention"
Application.ScreenUpdating = [COLOR=blue]False[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Data2")
    Lrow = .Cells(Rows.Count, "P").End(xlUp).Row
    [COLOR=blue]For Each[/COLOR] c [COLOR=blue]In[/COLOR] .Range(.Cells(1, 16), .Cells(Lrow, 16))
        [COLOR=blue]If[/COLOR] c.Offset(0, 2) = "" [COLOR=blue]Then[/COLOR]
            [COLOR=blue]If[/COLOR] c.Value = SelValue1 [COLOR=blue]Or[/COLOR] c.Value = SelValue2 [COLOR=blue]Then[/COLOR] c.Offset(0, 4) = 110
        [COLOR=blue]End If[/COLOR]
    [COLOR=blue]Next[/COLOR] c
    .Range(.Cells(1, 16), .Cells(Lrow, 16)).AutoFilter Field:=1, Criteria1:=Array(SelValue1, _
    SelValue2), Operator:=xlFilterValues
[COLOR=blue]End With[/COLOR]
Application.ScreenUpdating = [COLOR=blue]True[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
612
J
Réponses
1
Affichages
2 K
Jerome5625
J
L
Réponses
2
Affichages
1 K
Legendre
L
S
Réponses
8
Affichages
1 K
Retour