Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ecraser des lignes de tableau en fonction du contenu d'une cellule

8 réponses
Avatar
Bruno
Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de plusieurs
centaines de lignes, écrase toutes les lignes dont la première cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno

8 réponses

Avatar
FFO
Salut bruno

Onglet("Feuil1") colonne A à traiter je te propose ceci :

Sheets("Feuil1").Activate
Range("A65535").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If

Celà devrait faire



Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de plusieurs
centaines de lignes, écrase toutes les lignes dont la première cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno


Avatar
FFO
Sheets("Feuil1").Activate
Range("A65535").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If

Celà devrait faire



Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de plusieurs
centaines de lignes, écrase toutes les lignes dont la première cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno


Avatar
Bruno
Rebonjour,
Merci FFO, j'ai testé : Ca fonctionne conformément aux espoirs et mon
inexpérience est en admiration devant l'efficacité de ces lignes de code que
je ne comprends pas tout à fait (J'avais copié le code sur un fichier renommé
et copié en double pour l'occasion...)
Comment faire la même chose, mais en écrasant toutes les lignes dont la
dernière cellule (colonne L) contient le mot RAS seul ou parmi une phrase
plus complexe ?

Mille merci pour votre aide,
Bruno


Sheets("Feuil1").Activate
Range("A65535").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If

Celà devrait faire



Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de plusieurs
centaines de lignes, écrase toutes les lignes dont la première cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno




Avatar
Jacky
Bonjour,

Sans sélection ??
'----------
Sub jj()
For i = Range("l65535").End(3).Row To 1 Step -1
If Cells(i, 12) Like "*RAS*" Then Rows(i).Delete
Next
End Sub
'---------

Salutations
JJ


"Bruno" a écrit dans le message de news:

Rebonjour,
Merci FFO, j'ai testé : Ca fonctionne conformément aux espoirs et mon
inexpérience est en admiration devant l'efficacité de ces lignes de code
que
je ne comprends pas tout à fait (J'avais copié le code sur un fichier
renommé
et copié en double pour l'occasion...)
Comment faire la même chose, mais en écrasant toutes les lignes dont la
dernière cellule (colonne L) contient le mot RAS seul ou parmi une phrase
plus complexe ?

Mille merci pour votre aide,
Bruno


Sheets("Feuil1").Activate
Range("A65535").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If

Celà devrait faire



Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de plusieurs
centaines de lignes, écrase toutes les lignes dont la première cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent
contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno






Avatar
FFO
Rebonjours à toi

A l'instar de Jacky qui affectionne les sans Sélection je te propose dans le
même esprit le même code quelque peu modifié:

Sheets("Feuil1").Activate
Range("L65535").End(xlUp).Activate
i = 0
Do While ActiveCell.Offset(-i, 0).Row > 1
If ActiveCell.Offset(-i, 0) Like "*RAS*" Then
ActiveCell.Offset(-i, 0).EntireRow.Delete
End If
i = i + 1
Loop
If ActiveCell.Offset(-i, 0) Like "*RAS*" Then
ActiveCell.Offset(-i, 0).EntireRow.Delete
End If

Celà devrait aussi faire


Rebonjour,
Merci FFO, j'ai testé : Ca fonctionne conformément aux espoirs et mon
inexpérience est en admiration devant l'efficacité de ces lignes de code que
je ne comprends pas tout à fait (J'avais copié le code sur un fichier renommé
et copié en double pour l'occasion...)
Comment faire la même chose, mais en écrasant toutes les lignes dont la
dernière cellule (colonne L) contient le mot RAS seul ou parmi une phrase
plus complexe ?

Mille merci pour votre aide,
Bruno


Sheets("Feuil1").Activate
Range("A65535").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If

Celà devrait faire



Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de plusieurs
centaines de lignes, écrase toutes les lignes dont la première cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno






Avatar
Bruno
Bonjour,
Ca marche aussi ! Est-il possible d'intégrer les deux actions dans la même
macro et en plus de lui demander d'écraser la ligne en question lorsqu'il y a
dans la cellule en question (Colonne L) soit "RAS" ou bien "résilié" ou bien
tout autre vocable que ma fantaisie me suggérerait d'insérer dans la macro ?

Ensuite, comment puis-je faire pour comprendre la syntaxe que vous avez
utilisé ?

Ce sont mes premières macro complexes (pour moi...)
Cordialement,
Bruno


Rebonjours à toi

A l'instar de Jacky qui affectionne les sans Sélection je te propose dans le
même esprit le même code quelque peu modifié:

Sheets("Feuil1").Activate
Range("L65535").End(xlUp).Activate
i = 0
Do While ActiveCell.Offset(-i, 0).Row > 1
If ActiveCell.Offset(-i, 0) Like "*RAS*" Then
ActiveCell.Offset(-i, 0).EntireRow.Delete
End If
i = i + 1
Loop
If ActiveCell.Offset(-i, 0) Like "*RAS*" Then
ActiveCell.Offset(-i, 0).EntireRow.Delete
End If

Celà devrait aussi faire


Rebonjour,
Merci FFO, j'ai testé : Ca fonctionne conformément aux espoirs et mon
inexpérience est en admiration devant l'efficacité de ces lignes de code que
je ne comprends pas tout à fait (J'avais copié le code sur un fichier renommé
et copié en double pour l'occasion...)
Comment faire la même chose, mais en écrasant toutes les lignes dont la
dernière cellule (colonne L) contient le mot RAS seul ou parmi une phrase
plus complexe ?

Mille merci pour votre aide,
Bruno


Sheets("Feuil1").Activate
Range("A65535").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If

Celà devrait faire



Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de plusieurs
centaines de lignes, écrase toutes les lignes dont la première cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno








Avatar
Jacky
Re...
Allez..... pour fantaisie pour fantaisie ;o))
'----------
Sub jj()
mot = InputBox("Quel est le mot que me suggère ma fantaisie du jour contenu
dans la colonne L dont je dois effacer les lignes" & Chr(10) & "En plus de
l'effacement si la colonne A est égale à 0", Application.UserName)
For i = Range("A65535").End(3).Row To 1 Step -1
If (Cells(i, 12) Like "*" & mot & "*" And mot <> "") Or Cells(i, 1) = 0
Then Rows(i).Delete
Next
End Sub
'-----------
Ensuite, comment puis-je faire pour comprendre la syntaxe que vous avez
utilisé ?


Mot = est une variable (ici non déclarée) qui aura la valeur de ce qui sera
entré dans la boite de dialogue (voir aussi l'aide de InputBox)

For i = Range("A65535").End(3).Row To 1 Step -1
Charge "i" du numéro de ligne de la dernière cellule occupé de la colonne A
(Range("A65535").End(3).Row ) jusqu'a la ligne 1 par pas de 1 en commencent
par la dernière
Si la dernière ligne occupée dans la colonne A est la ligne 10, la boucle se
fera de la ligne 10 à la ligne 1
L'équivalent de For i = 10 to 1 step-1

If (Cells(i, 12) Like "*" & mot & "*" And mot <> "") Or Cells(i, 1) = 0
Then Rows(i).Delete
(Cells(i, 12)= cellules(ligne, colonne) ici ligne prendra la valeur de i
(variable dans la boucle) et colonne la valeur 12(fixe) soit la colonne L

Like "*" & mot & "*" cherche dans cette cellule si le mot y est contenu
( voir l'aide de Like)
* est l'équivalent d'un joker
And mot <> "") = au cas ou mot n'a pas été renseigné

Cells(i, 1) = 0 regarde si la cellule de la ligne i , de la colonne 1
soit colonne A est égale à 0
La condition if tient compte de 3 conditions dont une impliquée
If (Cells(i, 12) Like "*" & mot & "*" And mot <> "") = si le mot est
trouvé ET si la variable mot n'est pas vide.
Or Cells(i, 1) = 0 si la cellule est égale à 0
Si le cellule (i,12) contient le mot et si mot est différent de rien (vide)
ou si cellule(i,1)=0 ,alors

Then Rows(i).Delete
Efface(Delete) toutes les colonnes(Rows) de la ligne i (i)

Bon.....Je ne sais pas si j'ai pu être d'un grand secours :-(((

--
Salutations
JJ


"Bruno" a écrit dans le message de news:

Bonjour,
Ca marche aussi ! Est-il possible d'intégrer les deux actions dans la même
macro et en plus de lui demander d'écraser la ligne en question lorsqu'il
y a
dans la cellule en question (Colonne L) soit "RAS" ou bien "résilié" ou
bien
tout autre vocable que ma fantaisie me suggérerait d'insérer dans la macro
?

Ensuite, comment puis-je faire pour comprendre la syntaxe que vous avez
utilisé ?

Ce sont mes premières macro complexes (pour moi...)
Cordialement,
Bruno


Rebonjours à toi

A l'instar de Jacky qui affectionne les sans Sélection je te propose dans
le
même esprit le même code quelque peu modifié:

Sheets("Feuil1").Activate
Range("L65535").End(xlUp).Activate
i = 0
Do While ActiveCell.Offset(-i, 0).Row > 1
If ActiveCell.Offset(-i, 0) Like "*RAS*" Then
ActiveCell.Offset(-i, 0).EntireRow.Delete
End If
i = i + 1
Loop
If ActiveCell.Offset(-i, 0) Like "*RAS*" Then
ActiveCell.Offset(-i, 0).EntireRow.Delete
End If

Celà devrait aussi faire


Rebonjour,
Merci FFO, j'ai testé : Ca fonctionne conformément aux espoirs et mon
inexpérience est en admiration devant l'efficacité de ces lignes de
code que
je ne comprends pas tout à fait (J'avais copié le code sur un fichier
renommé
et copié en double pour l'occasion...)
Comment faire la même chose, mais en écrasant toutes les lignes dont la
dernière cellule (colonne L) contient le mot RAS seul ou parmi une
phrase
plus complexe ?

Mille merci pour votre aide,
Bruno


Sheets("Feuil1").Activate
Range("A65535").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If

Celà devrait faire



Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de
plusieurs
centaines de lignes, écrase toutes les lignes dont la première
cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent
contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno










Avatar
Bruno
Merci, je vais essayer, mais les explications ne me sont utiles qu'autant que
j'ai un exercice concret à faire sur un doc qui me concerne. Ce qui est le
cas.
Existe-t-il de la doc accessible au vieux néophite que je suis sur VBA ?
Avec notamment un descriptif de chacun des éléments du langage VBA ?

Cordialement,
Bruno


Re...
Allez..... pour fantaisie pour fantaisie ;o))
'----------
Sub jj()
mot = InputBox("Quel est le mot que me suggère ma fantaisie du jour contenu
dans la colonne L dont je dois effacer les lignes" & Chr(10) & "En plus de
l'effacement si la colonne A est égale à 0", Application.UserName)
For i = Range("A65535").End(3).Row To 1 Step -1
If (Cells(i, 12) Like "*" & mot & "*" And mot <> "") Or Cells(i, 1) = 0
Then Rows(i).Delete
Next
End Sub
'-----------
Ensuite, comment puis-je faire pour comprendre la syntaxe que vous avez
utilisé ?


Mot = est une variable (ici non déclarée) qui aura la valeur de ce qui sera
entré dans la boite de dialogue (voir aussi l'aide de InputBox)

For i = Range("A65535").End(3).Row To 1 Step -1
Charge "i" du numéro de ligne de la dernière cellule occupé de la colonne A
(Range("A65535").End(3).Row ) jusqu'a la ligne 1 par pas de 1 en commencent
par la dernière
Si la dernière ligne occupée dans la colonne A est la ligne 10, la boucle se
fera de la ligne 10 à la ligne 1
L'équivalent de For i = 10 to 1 step-1

If (Cells(i, 12) Like "*" & mot & "*" And mot <> "") Or Cells(i, 1) = 0
Then Rows(i).Delete
(Cells(i, 12)= cellules(ligne, colonne) ici ligne prendra la valeur de i
(variable dans la boucle) et colonne la valeur 12(fixe) soit la colonne L

Like "*" & mot & "*" cherche dans cette cellule si le mot y est contenu
( voir l'aide de Like)
* est l'équivalent d'un joker
And mot <> "") = au cas ou mot n'a pas été renseigné

Cells(i, 1) = 0 regarde si la cellule de la ligne i , de la colonne 1
soit colonne A est égale à 0
La condition if tient compte de 3 conditions dont une impliquée
If (Cells(i, 12) Like "*" & mot & "*" And mot <> "") = si le mot est
trouvé ET si la variable mot n'est pas vide.
Or Cells(i, 1) = 0 si la cellule est égale à 0
Si le cellule (i,12) contient le mot et si mot est différent de rien (vide)
ou si cellule(i,1)=0 ,alors

Then Rows(i).Delete
Efface(Delete) toutes les colonnes(Rows) de la ligne i (i)

Bon.....Je ne sais pas si j'ai pu être d'un grand secours :-(((

--
Salutations
JJ


"Bruno" a écrit dans le message de news:

Bonjour,
Ca marche aussi ! Est-il possible d'intégrer les deux actions dans la même
macro et en plus de lui demander d'écraser la ligne en question lorsqu'il
y a
dans la cellule en question (Colonne L) soit "RAS" ou bien "résilié" ou
bien
tout autre vocable que ma fantaisie me suggérerait d'insérer dans la macro
?

Ensuite, comment puis-je faire pour comprendre la syntaxe que vous avez
utilisé ?

Ce sont mes premières macro complexes (pour moi...)
Cordialement,
Bruno


Rebonjours à toi

A l'instar de Jacky qui affectionne les sans Sélection je te propose dans
le
même esprit le même code quelque peu modifié:

Sheets("Feuil1").Activate
Range("L65535").End(xlUp).Activate
i = 0
Do While ActiveCell.Offset(-i, 0).Row > 1
If ActiveCell.Offset(-i, 0) Like "*RAS*" Then
ActiveCell.Offset(-i, 0).EntireRow.Delete
End If
i = i + 1
Loop
If ActiveCell.Offset(-i, 0) Like "*RAS*" Then
ActiveCell.Offset(-i, 0).EntireRow.Delete
End If

Celà devrait aussi faire


Rebonjour,
Merci FFO, j'ai testé : Ca fonctionne conformément aux espoirs et mon
inexpérience est en admiration devant l'efficacité de ces lignes de
code que
je ne comprends pas tout à fait (J'avais copié le code sur un fichier
renommé
et copié en double pour l'occasion...)
Comment faire la même chose, mais en écrasant toutes les lignes dont la
dernière cellule (colonne L) contient le mot RAS seul ou parmi une
phrase
plus complexe ?

Mille merci pour votre aide,
Bruno


Sheets("Feuil1").Activate
Range("A65535").End(xlUp).Select
Do While ActiveCell.Row > 1
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If
ActiveCell.Offset(-1, 0).Select
Loop
If ActiveCell = 0 Then
ActiveCell.EntireRow.Delete
End If

Celà devrait faire



Bonjour,
Je voudrais faire une macro, qui sur une feuille de calcul de
plusieurs
centaines de lignes, écrase toutes les lignes dont la première
cellule
contient le chiffre zeo, mais seul (Les autres cellules peuvent
contenir le
chiffre zero, mais comme element d'un nombre),
merci de votre aide (Je ne sais pas faire de boucle...)
Cordialement,
Bruno