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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <Pierre@Pierre.free.fr> a écrit dans le message de
news:BD677A49.28515%Pierre@Pierre.free.fr...
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
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
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
dans l'article Ol5bI0zlEHA.2968@TK2MSFTNGP14.phx.gbl, 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
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
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
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" <Pierre@Pierre.free.fr> a écrit dans le message de
news:BD6787CB.2852C%Pierre@Pierre.free.fr...
dans l'article Ol5bI0zlEHA.2968@TK2MSFTNGP14.phx.gbl, 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
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
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
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
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
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
de rien, de rien
Sans rancune ? :-)
--
Cordialement
@+
Xav
"Pierre" <Pierre@Pierre.free.fr> a écrit dans le message de news:
BD67B40B.28628%Pierre@Pierre.free.fr...
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
@+ 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
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
dans l'article e2Wbk02lEHA.3896@tk2msftngp13.phx.gbl, 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?
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
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
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" <Pierre@Pierre.free.fr> a écrit dans le message de news:
BD67D2C2.2864A%Pierre@Pierre.free.fr...
dans l'article e2Wbk02lEHA.3896@tk2msftngp13.phx.gbl, 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?
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
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
dans l'article #hnzo68lEHA.2380@TK2MSFTNGP14.phx.gbl, 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!
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
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
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
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
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
dans l'article eghzhEBmEHA.3816@TK2MSFTNGP14.phx.gbl, AV à
alain.vallon@wanadoo.fr 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.
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.