problème de sélection avec macro

Le
gaston
Bonjour !
Je suis dbutant en vbaj'ai une liste avec des sous
totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len(f) -
InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver ce que TOUTE ma zone
soit "scanne"et que la macro ci dessus s'excute
automatiquement pour toutes les cellules de la colonne G
j'ai bien trouv ceci qui ressemble un peu ce que je
veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G affiche
zro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , , xlByRows,
xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Boursicot
Le #1237955
Bonjour,

une macro qui te detruit toutes les lignes vides dans ta
selection (mais aussi bien sur à coté).

Sub DetruireLigne()
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To Premiereligne Step -1
If Application.CountA(Rows(R)) = 0 Then Rows(R).Delete
Next R
End Sub

si ta plage est déjà définie tu remplaces selection par range(" xx : yy ")

si ta plage varie en fonction de tes données tu utilises au choix ( b17
etant la case de demarrage de tes données et 4 le nombre de colonnes que tu
veux selectionner)

Range("B17", Range("b17").End(xlDown).Offset(0, 4).Address).Select

ou

Range("B17", Range("b65000").End(xlUp).Offset(0, 4).Address).Select

Cordialement

"gaston" news:15e2801c41e23$0de5f740$
Bonjour !
Je suis débutant en vba...j'ai une liste avec des sous
totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len(f) -
InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver à ce que TOUTE ma zone
soit "scannée"et que la macro ci dessus s'exécute
automatiquement pour toutes les cellules de la colonne G
j'ai bien trouvé ceci qui ressemble un peu à ce que je
veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G affiche
zéro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , , xlByRows,
xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?
gaston
Le #1282483
heu...je remplace selection où ?

-----Message d'origine-----
Bonjour,

une macro qui te detruit toutes les lignes vides dans ta
selection (mais aussi bien sur à coté).

Sub DetruireLigne()
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To Premiereligne Step -1
If Application.CountA(Rows(R)) = 0 Then Rows(R).Delete
Next R
End Sub

si ta plage est déjà définie tu remplaces selection par
range(" xx : yy ")


si ta plage varie en fonction de tes données tu utilises
au choix ( b17

etant la case de demarrage de tes données et 4 le nombre
de colonnes que tu

veux selectionner)

Range("B17", Range("b17").End(xlDown).Offset(0,
4).Address).Select


ou

Range("B17", Range("b65000").End(xlUp).Offset(0,
4).Address).Select


Cordialement

"gaston" dans le message de

news:15e2801c41e23$0de5f740$
Bonjour !
Je suis débutant en vba...j'ai une liste avec des sous
totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len(f) -
InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver à ce que TOUTE ma zone
soit "scannée"et que la macro ci dessus s'exécute
automatiquement pour toutes les cellules de la colonne G
j'ai bien trouvé ceci qui ressemble un peu à ce que je
veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G affiche
zéro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , , xlByRows,
xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?


.



michdenis
Le #1282478
Bonjour Gaston,

Voici une façon de faire.
Dans la procédure efface, remplace le nom de la feuille
et la plage de cellule à scanner.

'------------------------------
Sub efface()

Dim Rg As Range, A As Long

With Worksheets("Feuil2")
Set Rg = .Range("A1:A10")
End With

For A = Rg.Rows.Count To 1 Step -1
If Cellule(Rg(A)) = True Then
Rg(A).EntireRow.Delete
End If
Next
End Sub
'------------------------------
Function Cellule(R As Range) As Boolean
If InStr(1, R, "Sous.Total", vbTextCompare) > 0 Then
Cellule = True
End If

End Function
'------------------------------


Salutations!


"gaston" news:17bb901c41e51$000d9190$
heu...je remplace selection où ?

-----Message d'origine-----
Bonjour,

une macro qui te detruit toutes les lignes vides dans ta
selection (mais aussi bien sur à coté).

Sub DetruireLigne()
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To Premiereligne Step -1
If Application.CountA(Rows(R)) = 0 Then Rows(R).Delete
Next R
End Sub

si ta plage est déjà définie tu remplaces selection par
range(" xx : yy ")


si ta plage varie en fonction de tes données tu utilises
au choix ( b17

etant la case de demarrage de tes données et 4 le nombre
de colonnes que tu

veux selectionner)

Range("B17", Range("b17").End(xlDown).Offset(0,
4).Address).Select


ou

Range("B17", Range("b65000").End(xlUp).Offset(0,
4).Address).Select


Cordialement

"gaston" dans le message de

news:15e2801c41e23$0de5f740$
Bonjour !
Je suis débutant en vba...j'ai une liste avec des sous
totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len(f) -
InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver à ce que TOUTE ma zone
soit "scannée"et que la macro ci dessus s'exécute
automatiquement pour toutes les cellules de la colonne G
j'ai bien trouvé ceci qui ressemble un peu à ce que je
veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G affiche
zéro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , , xlByRows,
xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?


.



Boursicot
Le #1282449
Bonsoir,

tu remplaces selection à l'endroit ou le mot apparait par range...

Cordialement.

"michdenis" news:%
Bonjour Gaston,

Voici une façon de faire.
Dans la procédure efface, remplace le nom de la feuille
et la plage de cellule à scanner.

'------------------------------
Sub efface()

Dim Rg As Range, A As Long

With Worksheets("Feuil2")
Set Rg = .Range("A1:A10")
End With

For A = Rg.Rows.Count To 1 Step -1
If Cellule(Rg(A)) = True Then
Rg(A).EntireRow.Delete
End If
Next
End Sub
'------------------------------
Function Cellule(R As Range) As Boolean
If InStr(1, R, "Sous.Total", vbTextCompare) > 0 Then
Cellule = True
End If

End Function
'------------------------------


Salutations!


"gaston" news:17bb901c41e51$000d9190$
heu...je remplace selection où ?

-----Message d'origine-----
Bonjour,

une macro qui te detruit toutes les lignes vides dans ta
selection (mais aussi bien sur à coté).

Sub DetruireLigne()
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To Premiereligne Step -1
If Application.CountA(Rows(R)) = 0 Then Rows(R).Delete
Next R
End Sub

si ta plage est déjà définie tu remplaces selection par
range(" xx : yy ")


si ta plage varie en fonction de tes données tu utilises
au choix ( b17

etant la case de demarrage de tes données et 4 le nombre
de colonnes que tu

veux selectionner)

Range("B17", Range("b17").End(xlDown).Offset(0,
4).Address).Select


ou

Range("B17", Range("b65000").End(xlUp).Offset(0,
4).Address).Select


Cordialement

"gaston" dans le message de

news:15e2801c41e23$0de5f740$
Bonjour !
Je suis débutant en vba...j'ai une liste avec des sous
totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len(f) -
InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver à ce que TOUTE ma zone
soit "scannée"et que la macro ci dessus s'exécute
automatiquement pour toutes les cellules de la colonne G
j'ai bien trouvé ceci qui ressemble un peu à ce que je
veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G affiche
zéro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , , xlByRows,
xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?


.







gaston
Le #1238467
merci à tous deux: je m'en vais tester vos solutions
amicalement
-----Message d'origine-----
Bonsoir,

tu remplaces selection à l'endroit ou le mot apparait par
range...


Cordialement.

"michdenis" message de

news:%
Bonjour Gaston,

Voici une façon de faire.
Dans la procédure efface, remplace le nom de la feuille
et la plage de cellule à scanner.

'------------------------------
Sub efface()

Dim Rg As Range, A As Long

With Worksheets("Feuil2")
Set Rg = .Range("A1:A10")
End With

For A = Rg.Rows.Count To 1 Step -1
If Cellule(Rg(A)) = True Then
Rg(A).EntireRow.Delete
End If
Next
End Sub
'------------------------------
Function Cellule(R As Range) As Boolean
If InStr(1, R, "Sous.Total", vbTextCompare) > 0 Then
Cellule = True
End If

End Function
'------------------------------


Salutations!


"gaston" dans le message de


news:17bb901c41e51$000d9190$
heu...je remplace selection où ?

-----Message d'origine-----
Bonjour,

une macro qui te detruit toutes les lignes vides dans
ta



selection (mais aussi bien sur à coté).

Sub DetruireLigne()
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To Premiereligne Step -1
If Application.CountA(Rows(R)) = 0 Then Rows
(R).Delete



Next R
End Sub

si ta plage est déjà définie tu remplaces selection par
range(" xx : yy ")


si ta plage varie en fonction de tes données tu
utilises



au choix ( b17
etant la case de demarrage de tes données et 4 le
nombre



de colonnes que tu
veux selectionner)

Range("B17", Range("b17").End(xlDown).Offset(0,
4).Address).Select


ou

Range("B17", Range("b65000").End(xlUp).Offset(0,
4).Address).Select


Cordialement

"gaston" dans le message de

news:15e2801c41e23$0de5f740$
Bonjour !
Je suis débutant en vba...j'ai une liste avec des sous
totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len
(f) -



InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver à ce que TOUTE ma zone
soit "scannée"et que la macro ci dessus s'exécute
automatiquement pour toutes les cellules de la colonne
G



j'ai bien trouvé ceci qui ressemble un peu à ce que je
veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G affiche
zéro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , , xlByRows,
xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?


.







.





gaston
Le #1238465
ca ne fonctionne pas. je me suis peut-être mal expliqué
sur ce que je veux obtenir: j'ai une liste comme ça:
D E F G
CLIENT CRED EMIS(+) CRED ENCAI.(-) SOLDE
ABAD -54,56 -54,56
total ABAD 0 -54,56 -54,56
AGOUT 413,6 413,6
AGOUT -413,6 -413,6
total AGOUT 413,6 -413,6 0
ARANGUET 526,87 526,87
ARANGUET -200 -200
ARANGUET -176,87 -176,87
total ARANGUET 526,87 -376,87 150
BALLIHAUT 261,2 261,2
BALLIHAUT -130,6 -130,6
BALLIHAUT -130,6 -130,6
total BALLIHAUT 261,2 -261,2 0

donc dans cet exemple, je voudrais que soient supprimées
TOUTES les lignes concernant AGOUT et BALLIHAUT (sachant
que la longueur de la liste est variable)

-----Message d'origine-----
merci à tous deux: je m'en vais tester vos solutions
amicalement
-----Message d'origine-----
Bonsoir,

tu remplaces selection à l'endroit ou le mot apparait
par


range...

Cordialement.

"michdenis" message de

news:%
Bonjour Gaston,

Voici une façon de faire.
Dans la procédure efface, remplace le nom de la feuille
et la plage de cellule à scanner.

'------------------------------
Sub efface()

Dim Rg As Range, A As Long

With Worksheets("Feuil2")
Set Rg = .Range("A1:A10")
End With

For A = Rg.Rows.Count To 1 Step -1
If Cellule(Rg(A)) = True Then
Rg(A).EntireRow.Delete
End If
Next
End Sub
'------------------------------
Function Cellule(R As Range) As Boolean
If InStr(1, R, "Sous.Total", vbTextCompare) > 0 Then
Cellule = True
End If

End Function
'------------------------------


Salutations!


"gaston" dans le message de


news:17bb901c41e51$000d9190$
heu...je remplace selection où ?

-----Message d'origine-----
Bonjour,

une macro qui te detruit toutes les lignes vides
dans




ta
selection (mais aussi bien sur à coté).

Sub DetruireLigne()
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To Premiereligne Step -1
If Application.CountA(Rows(R)) = 0 Then Rows
(R).Delete



Next R
End Sub

si ta plage est déjà définie tu remplaces selection
par




range(" xx : yy ")

si ta plage varie en fonction de tes données tu
utilises



au choix ( b17
etant la case de demarrage de tes données et 4 le
nombre



de colonnes que tu
veux selectionner)

Range("B17", Range("b17").End(xlDown).Offset(0,
4).Address).Select


ou

Range("B17", Range("b65000").End(xlUp).Offset(0,
4).Address).Select


Cordialement

"gaston" dans le message de

news:15e2801c41e23$0de5f740$
Bonjour !
Je suis débutant en vba...j'ai une liste avec des sous
totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len
(f) -



InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver à ce que TOUTE ma zone
soit "scannée"et que la macro ci dessus s'exécute
automatiquement pour toutes les cellules de la
colonne




G
j'ai bien trouvé ceci qui ressemble un peu à ce que je
veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G
affiche




zéro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , , xlByRows,
xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?


.







.

.







Boursicot
Le #1238711
Bonjour,

Voilà une macro qui marche pour ton cas de figure.

Il faut d'abord faire un petit formulaire pour rentrer la valeur pour
laquelle tu veux que tes lignes soient supprimées. Ta macro de base appelle
le formulaire, sur lequel il y a une listbox et un bouton validation qui
declenche la macro de suppression en lui repercutant la valeur saisie.
Attention la valeur saisie doit être strictement la valeur que tu veux
supprimer. Une difference de casse ou un espace supplémentaire font que le
nom est different. Je pense qu'on peut perfectionner en mettant des valeurs
joker pour que ça supprime en même temps " total machin" mais je n'ai pas
encore trop essayé.

Le code de la macro de destruction (b7 à adapter et 2 dans cells (r,2)):

Sub DetruireLigne()

Range("B7", Range("b7").End(xlDown).Offset(0, 4).Address).Select
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count - 1
nomvalue = Formulaire.nom.Value

For R = DerniereLigne To Premiereligne Step -1
If Cells(R, 2).Value = nomvalue Then Rows(R).Delete
Next R

Formulaire.Hide
End Sub



Le code du formulaire
Attention à renommer ton bouton commandbutton en validation et ta listbox
en nom ou à mettre ta macro en concordance :

Private Sub validation_Click()
DetruireLigne
End Sub




"gaston" news:1abd401c41ed4$a6525490$
ca ne fonctionne pas. je me suis peut-être mal expliqué
sur ce que je veux obtenir: j'ai une liste comme ça:
D E F G
CLIENT CRED EMIS(+) CRED ENCAI.(-) SOLDE
ABAD -54,56 -54,56
total ABAD 0 -54,56 -54,56
AGOUT 413,6 413,6
AGOUT -413,6 -413,6
total AGOUT 413,6 -413,6 0
ARANGUET 526,87 526,87
ARANGUET -200 -200
ARANGUET -176,87 -176,87
total ARANGUET 526,87 -376,87 150
BALLIHAUT 261,2 261,2
BALLIHAUT -130,6 -130,6
BALLIHAUT -130,6 -130,6
total BALLIHAUT 261,2 -261,2 0

donc dans cet exemple, je voudrais que soient supprimées
TOUTES les lignes concernant AGOUT et BALLIHAUT (sachant
que la longueur de la liste est variable)

-----Message d'origine-----
merci à tous deux: je m'en vais tester vos solutions
amicalement
-----Message d'origine-----
Bonsoir,

tu remplaces selection à l'endroit ou le mot apparait
par


range...

Cordialement.

"michdenis" message de

news:%
Bonjour Gaston,

Voici une façon de faire.
Dans la procédure efface, remplace le nom de la feuille
et la plage de cellule à scanner.

'------------------------------
Sub efface()

Dim Rg As Range, A As Long

With Worksheets("Feuil2")
Set Rg = .Range("A1:A10")
End With

For A = Rg.Rows.Count To 1 Step -1
If Cellule(Rg(A)) = True Then
Rg(A).EntireRow.Delete
End If
Next
End Sub
'------------------------------
Function Cellule(R As Range) As Boolean
If InStr(1, R, "Sous.Total", vbTextCompare) > 0 Then
Cellule = True
End If

End Function
'------------------------------


Salutations!


"gaston" dans le message de


news:17bb901c41e51$000d9190$
heu...je remplace selection où ?

-----Message d'origine-----
Bonjour,

une macro qui te detruit toutes les lignes vides
dans




ta
selection (mais aussi bien sur à coté).

Sub DetruireLigne()
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To Premiereligne Step -1
If Application.CountA(Rows(R)) = 0 Then Rows
(R).Delete



Next R
End Sub

si ta plage est déjà définie tu remplaces selection
par




range(" xx : yy ")

si ta plage varie en fonction de tes données tu
utilises



au choix ( b17
etant la case de demarrage de tes données et 4 le
nombre



de colonnes que tu
veux selectionner)

Range("B17", Range("b17").End(xlDown).Offset(0,
4).Address).Select


ou

Range("B17", Range("b65000").End(xlUp).Offset(0,
4).Address).Select


Cordialement

"gaston" dans le message de

news:15e2801c41e23$0de5f740$
Bonjour !
Je suis débutant en vba...j'ai une liste avec des sous
totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len
(f) -



InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver à ce que TOUTE ma zone
soit "scannée"et que la macro ci dessus s'exécute
automatiquement pour toutes les cellules de la
colonne




G
j'ai bien trouvé ceci qui ressemble un peu à ce que je
veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G
affiche




zéro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , , xlByRows,
xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?


.







.

.







gaston
Le #1240702
merci
-----Message d'origine-----
Bonjour,

Voilà une macro qui marche pour ton cas de figure.

Il faut d'abord faire un petit formulaire pour rentrer la
valeur pour

laquelle tu veux que tes lignes soient supprimées. Ta
macro de base appelle

le formulaire, sur lequel il y a une listbox et un bouton
validation qui

declenche la macro de suppression en lui repercutant la
valeur saisie.

Attention la valeur saisie doit être strictement la
valeur que tu veux

supprimer. Une difference de casse ou un espace
supplémentaire font que le

nom est different. Je pense qu'on peut perfectionner en
mettant des valeurs

joker pour que ça supprime en même temps " total
machin" mais je n'ai pas

encore trop essayé.

Le code de la macro de destruction (b7 à adapter et 2
dans cells (r,2)):


Sub DetruireLigne()

Range("B7", Range("b7").End(xlDown).Offset(0,
4).Address).Select

Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count - 1
nomvalue = Formulaire.nom.Value

For R = DerniereLigne To Premiereligne Step -1
If Cells(R, 2).Value = nomvalue Then Rows(R).Delete
Next R

Formulaire.Hide
End Sub



Le code du formulaire
Attention à renommer ton bouton commandbutton en
validation et ta listbox

en nom ou à mettre ta macro en concordance :

Private Sub validation_Click()
DetruireLigne
End Sub




"gaston" dans le message de

news:1abd401c41ed4$a6525490$
ca ne fonctionne pas. je me suis peut-être mal expliqué
sur ce que je veux obtenir: j'ai une liste comme ça:
D E F G
CLIENT CRED EMIS(+) CRED ENCAI.(-) SOLDE
ABAD -54,56 -54,56
total ABAD 0 -54,56 -54,56
AGOUT 413,6 413,6
AGOUT -413,6 -413,6
total AGOUT 413,6 -413,6 0
ARANGUET 526,87 526,87
ARANGUET -200 -200
ARANGUET -176,87 -176,87
total ARANGUET 526,87 -376,87 150
BALLIHAUT 261,2 261,2
BALLIHAUT -130,6 -130,6
BALLIHAUT -130,6 -130,6
total BALLIHAUT 261,2 -261,2 0

donc dans cet exemple, je voudrais que soient supprimées
TOUTES les lignes concernant AGOUT et BALLIHAUT (sachant
que la longueur de la liste est variable)

-----Message d'origine-----
merci à tous deux: je m'en vais tester vos solutions
amicalement
-----Message d'origine-----
Bonsoir,

tu remplaces selection à l'endroit ou le mot apparait
par


range...

Cordialement.

"michdenis" message de

news:%
Bonjour Gaston,

Voici une façon de faire.
Dans la procédure efface, remplace le nom de la
feuille




et la plage de cellule à scanner.

'------------------------------
Sub efface()

Dim Rg As Range, A As Long

With Worksheets("Feuil2")
Set Rg = .Range("A1:A10")
End With

For A = Rg.Rows.Count To 1 Step -1
If Cellule(Rg(A)) = True Then
Rg(A).EntireRow.Delete
End If
Next
End Sub
'------------------------------
Function Cellule(R As Range) As Boolean
If InStr(1, R, "Sous.Total", vbTextCompare) > 0
Then




Cellule = True
End If

End Function
'------------------------------


Salutations!


"gaston" dans le message de


news:17bb901c41e51$000d9190$
heu...je remplace selection où ?

-----Message d'origine-----
Bonjour,

une macro qui te detruit toutes les lignes vides
dans




ta
selection (mais aussi bien sur à coté).

Sub DetruireLigne()
Premiereligne = Selection.Row
DerniereLigne = Premiereligne + Selection.Rows.Count
Application.ScreenUpdating = False
For R = DerniereLigne To Premiereligne Step -1
If Application.CountA(Rows(R)) = 0 Then Rows
(R).Delete



Next R
End Sub

si ta plage est déjà définie tu remplaces selection
par




range(" xx : yy ")

si ta plage varie en fonction de tes données tu
utilises



au choix ( b17
etant la case de demarrage de tes données et 4 le
nombre



de colonnes que tu
veux selectionner)

Range("B17", Range("b17").End(xlDown).Offset(0,
4).Address).Select


ou

Range("B17", Range("b65000").End(xlUp).Offset(0,
4).Address).Select


Cordialement

"gaston" écrit





dans le message de
news:15e2801c41e23$0de5f740$
Bonjour !
Je suis débutant en vba...j'ai une liste avec des
sous





totaux
cette macro ne permet de supprimer QUE les lignes
concernant UNE cellule (G12)
Function zoneST(x) As Range
Dim f As String
f = Range(x).Formula
Set zoneST = Range(Mid(f, InStr(f, ",") + 1, Len
(f) -



InStr(f, ",") -1))
End Function
Sub efface()
zoneST("G12").EntireRow.Delete
Range("G12").Value = "0"
End Sub

or je voudrais arriver à ce que TOUTE ma zone
soit "scannée"et que la macro ci dessus s'exécute
automatiquement pour toutes les cellules de la
colonne




G
j'ai bien trouvé ceci qui ressemble un peu à ce que
je





veux, mais je ne sais pas comment l'adapter:

Sub epuration()
' supprimer toutes les lignes dont la colonne G
affiche




zéro
Dim r As Long
Application.ScreenUpdating = False
On Error Resume Next
For r = Range("G:G").Find("*", [A1], , ,
xlByRows,





xlPrevious).Row To 1
Step -1
If Cells(r, 7) = 0 Then _
Rows(r).Delete
Next r
End Sub

, auriez-vous une solution ?


.







.

.





.







Publicité
Poster une réponse
Anonyme