OVH Cloud OVH Cloud

Suppression lignes

10 réponses
Avatar
Pierre
Bonjour,
Je récupère par une macro une plage de cellule de A1 à J17.
je souhaiterai incorporer dans ma macro la suppression de ligne si les
cellules E.., F..,G.. et H.. sont vides; que si ces quatre conditions sont
réunies en même temps.
Quelqu'un peut m'aider?
Merci.
Pierre

10 réponses

Avatar
Xav
Bonjour Pierre

j'avais bricolé ça (il y a certainement mieux)

Sub Efface()

Dernier_Rang = Cells(1, 1).End(xlDown).Row + 1

i = 1

Do While i < Dernier_Rang

If Cells(i, 5) = "" and Cells(i, 6) ="" and Cells(i ,7 )= "" and
Cells(i, 8)= "" Then

Rows(i).Delete Shift:=xlUp
i = i - 1
Dernier_Rang = Dernier_Rang - 1

End If

i = i + 1

Loop

End Sub
--
Cordialement

@+
Xav
"Pierre" a écrit dans le message de
news:BD677A49.28515%
Bonjour,
Je récupère par une macro une plage de cellule de A1 à J17.
je souhaiterai incorporer dans ma macro la suppression de ligne si les
cellules E.., F..,G.. et H.. sont vides; que si ces quatre conditions sont
réunies en même temps.
Quelqu'un peut m'aider?
Merci.
Pierre



Avatar
Pierre
dans l'article , Xav à
xavierpointheroutatgroupe-cahorspointcom a écrit le 10/09/04 15:49 :

Bonjour Pierre
j'avais bricolé ça (il y a certainement mieux)
Sub Efface()
Dernier_Rang = Cells(1, 1).End(xlDown).Row + 1
i = 1
Do While i < Dernier_Rang
If Cells(i, 5) = "" and Cells(i, 6) ="" and Cells(i ,7 )= "" and Cells(i, 8) "" Then
Rows(i).Delete Shift:=xlUp
i = i - 1
Dernier_Rang = Dernier_Rang - 1
End If
i = i + 1
Loop
End Sub


Bonjour Xav,
Je n'arrive pas a faire fonctionner ton code.
Il ne se passe rien.
J'ai même essayé de renseigner la plage ou la suppression doit se faire
...?¿
cela ne fonctionne pas
Excel 98 sous macintosh
Merci .
Pierre

Avatar
Xav
oula, un Mac...;-(

peut-etre qu'il en reconnait pas la formule pour trouver la derniere ligne.

Comme dans ton cas, ta plage de cellule est connue, essaie de remplacer la
premiere ligne par

Dernier_Rang = 17 (ce que tu as peut etre deja fait)

Si cela ne marche pas, je n'en sais pas plus que toi
--
Cordialement

@+
Xav
"Pierre" a écrit dans le message de
news:BD6787CB.2852C%
dans l'article , Xav à
xavierpointheroutatgroupe-cahorspointcom a écrit le 10/09/04 15:49 :

Bonjour Pierre
j'avais bricolé ça (il y a certainement mieux)
Sub Efface()
Dernier_Rang = Cells(1, 1).End(xlDown).Row + 1
i = 1
Do While i < Dernier_Rang
If Cells(i, 5) = "" and Cells(i, 6) ="" and Cells(i ,7 )= "" and
Cells(i, 8) > "" Then


Rows(i).Delete Shift:=xlUp
i = i - 1
Dernier_Rang = Dernier_Rang - 1
End If
i = i + 1
Loop
End Sub


Bonjour Xav,
Je n'arrive pas a faire fonctionner ton code.
Il ne se passe rien.
J'ai même essayé de renseigner la plage ou la suppression doit se faire
...?¿
cela ne fonctionne pas
Excel 98 sous macintosh
Merci .
Pierre




Avatar
Pierre
Le célèbre Xavier de Cahors a écrit le 10/09/04 16:41 :

oula, un Mac...;-(
Ah ça commence ;-)


peut-etre qu'il en reconnait pas la formule pour trouver la derniere ligne.
Si si il reconnaît même celle là.


Comme dans ton cas, ta plage de cellule est connue, essaie de remplacer la
premiere ligne par
Dernier_Rang = 17 (ce que tu as peut etre deja fait)
Si cela ne marche pas, je n'en sais pas plus que toi


Ta formule marche parfaitement bien.

Un grand merci .

Pierre

Avatar
Xav
de rien, de rien

Sans rancune ? :-)

--
Cordialement

@+
Xav
"Pierre" a écrit dans le message de news:
BD67B40B.28628%
Le célèbre Xavier de Cahors a écrit le 10/09/04 16:41 :

oula, un Mac...;-(
Ah ça commence ;-)


peut-etre qu'il en reconnait pas la formule pour trouver la derniere
ligne.
Si si il reconnaît même celle là.


Comme dans ton cas, ta plage de cellule est connue, essaie de remplacer
la
premiere ligne par
Dernier_Rang = 17 (ce que tu as peut etre deja fait)
Si cela ne marche pas, je n'en sais pas plus que toi


Ta formule marche parfaitement bien.

Un grand merci .

Pierre




Avatar
Pierre
dans l'article , Xav à
xavierpointheroutatgroupe-cahorspointcom a écrit le 10/09/04 21:35 :

de rien, de rien

Sans rancune ? :-)


Sans rancune aucune
:-)
Alors une petite dernière
maintenant dans ce qu'il me reste de cellules, j'aimerai que toutes les
lignes qui ont dans la huitième colonne (H) le mot "Toto", aient une
écriture en caractères gras.
c'est faisable ça?

merci.
Pierre

Avatar
Xav
Bonjour Pierre

ceci devrait faire l'affaire

Sub Mise_en_Gras()

Dim i As Integer

For i = 1 To 17

If Cells(i, 8) = "Toto" Then

Cells(i, 8).Font.Bold = True

End If

Next i

End Sub

Si tu le mets à la suite du module précédent, on peut faire aussi

For i = 1 To Dernier_Rang

--
Cordialement

@+
Xav
"Pierre" a écrit dans le message de news:
BD67D2C2.2864A%
dans l'article , Xav à
xavierpointheroutatgroupe-cahorspointcom a écrit le 10/09/04 21:35 :

de rien, de rien

Sans rancune ? :-)


Sans rancune aucune
:-)
Alors une petite dernière
maintenant dans ce qu'il me reste de cellules, j'aimerai que toutes les
lignes qui ont dans la huitième colonne (H) le mot "Toto", aient une
écriture en caractères gras.
c'est faisable ça?

merci.
Pierre




Avatar
Pierre
dans l'article #, Xav à
xavierpointheroutatgroupe-cahorspointcom a écrit le 11/09/04 9:13 :

Dim i As Integer
For i = 1 To Dernier_Rang
If Cells(i, 8) = "Toto" Then
Cells(i, 8).Font.Bold = True
End If
Next i


Bonjour Xavier,
Tout d'abord merci de te pencher sur mon problème.
j'ai bien copié le code et l'ai intégré dans le mien. Mais lorsque je lance
la macro il m'affiche un message d'erreur :
" Erreur de compilation
Déclaration existante dans la période en cours"
et " i as integer" est surligné
j'ai désactivé la ligne...
Ça a l'air de fonctionner correctement.
C'est grave docteur?

Cahors .... J'avais visité une cave tenue par un amoureux du vin (si, si) il
a creusé dans le rocher une "pièce (immense)" et y a entreposé ses vins afin
qu'ils vieillissent dans de bonnes conditions.... il faut que je retrouve le
nom.
;-))) hips!

Salutations (très) respectueuses !

Pierre

Avatar
AV
Tes deux demandes :

Sub zzz()
For i = 17 To 1 Step -1
z = Range("E" & i & ":H" & i).Address
If Evaluate("sum(isblank(" & z & ")*1)") = 4 Then
Range("A" & i & ":J" & i).Delete Shift:=xlUp
End If
On Error Resume Next
If Cells(i - 1, "H") = "toto" Then Range("A" & i - 1 & ":J" & i - 1).Font.Bold True
Next
End Sub
AV
Avatar
Pierre
dans l'article , AV à
a écrit le 11/09/04 17:07 :

Tes deux demandes :
Sub zzz()
For i = 17 To 1 Step -1
z = Range("E" & i & ":H" & i).Address
If Evaluate("sum(isblank(" & z & ")*1)") = 4 Then
Range("A" & i & ":J" & i).Delete Shift:=xlUp
End If
On Error Resume Next
If Cells(i - 1, "H") = "toto" Then Range("A" & i - 1 & ":J" & i - 1).Font.Bold
True
Next

End Sub
AV
Bonjour,

En fait j'ai du modifier le code de Xav. car cela ne fonctionnait pas, je me
suis aperçu qu'aprés la récupération des cellules, elles n'était pas vierges
; les deux premières contenaient "0" et les deux autres étaient bien vides,
j'ai donc modifié comme ceci :
If Cells(i, 5) = "0" And Cells(i, 6) = "0" And Cells(i, 7) = "" And Cells(i,
8) = "" Then
et là cela fonctionne .
il suffirait peut-être d'intégrer ces nouvelles données dans ton code, mais
je ne sais pas faire...
Ensuite l'option "écriture grasse" ne fonctionne pas.

Pierre