OVH Cloud OVH Cloud

probleme avec isempty

6 réponses
Avatar
nol
Bonsoir et merci à celles et à ceux qui nous répondent, ainsi qu'aux auteurs
d'exemples
qui nous facilitent la vie (et rallongent nos nuits)


sous excel 97 avec VBA
je cherche à supprimer les lignes "vides" des pages que je vais imprimer
j'ai determiné le nombre de colonnes à imprimer et je veux uniquement
effacer les lignes
dans lesquelles il n'y rien dans les colonnes selectionnées
le nombre de colonnes est stocké dans une variable
mais lorsque j'ai voulu utiliser une formule du genre

For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Range("r: nb_col_a_imp")) Then Rows(r).Delete
Next r

err 1004
la methode range de l'objet global à echoué
et sur aide la rubrique n'existe pas

si je convertit la variable en texte c'est pareil
txtnbcol = Chr(nb_col_a_imp + 64)

une idée luxmineuse ???

merci de votre aide

6 réponses

Avatar
FxM
Bonsoir,

Un exemple tout juste testé [n'est-ce pas Jean-Paul ? :o) ]

Sub test()
lx = [A:IV].Find("*", [A:IV].Item(1), , , , xlPrevious).Row
For r = lx To 1 Step -1
With Intersect(Range("A1:Z1").EntireColumn, Range("A" & r).EntireRow)
If .Cells.Count = Application.CountBlank(.Cells) Then
.EntireRow.Delete shift:=xlUp
End If
End With
Next r
End Sub

@+
FxM


Bonsoir et merci à celles et à ceux qui nous répondent, ainsi qu'aux auteurs
d'exemples
qui nous facilitent la vie (et rallongent nos nuits)


sous excel 97 avec VBA
je cherche à supprimer les lignes "vides" des pages que je vais imprimer
j'ai determiné le nombre de colonnes à imprimer et je veux uniquement
effacer les lignes
dans lesquelles il n'y rien dans les colonnes selectionnées
le nombre de colonnes est stocké dans une variable
mais lorsque j'ai voulu utiliser une formule du genre

For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Range("r: nb_col_a_imp")) Then Rows(r).Delete
Next r

err 1004
la methode range de l'objet global à echoué
et sur aide la rubrique n'existe pas

si je convertit la variable en texte c'est pareil
txtnbcol = Chr(nb_col_a_imp + 64)

une idée luxmineuse ???

merci de votre aide




Avatar
JB
Bonjour,

Cellules vides en colonne A:
On Error Resume Next
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete


Cellules vides sur toutes les colonnes:

For i = [A65000].End(xlUp).Row To 1 Step -1
If Application.CountA(Rows(i)) = 0 Then
Rows(i).Delete
End If
Next i

Cordialemnt JB

Bonsoir et merci à celles et à ceux qui nous répondent, ainsi qu'au x auteurs
d'exemples
qui nous facilitent la vie (et rallongent nos nuits)


sous excel 97 avec VBA
je cherche à supprimer les lignes "vides" des pages que je vais imprimer
j'ai determiné le nombre de colonnes à imprimer et je veux uniquement
effacer les lignes
dans lesquelles il n'y rien dans les colonnes selectionnées
le nombre de colonnes est stocké dans une variable
mais lorsque j'ai voulu utiliser une formule du genre

For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Range("r: nb_col_a_imp")) Then Rows(r).Delete
Next r

err 1004
la methode range de l'objet global à echoué
et sur aide la rubrique n'existe pas

si je convertit la variable en texte c'est pareil
txtnbcol = Chr(nb_col_a_imp + 64)

une idée luxmineuse ???

merci de votre aide


Avatar
jps
ah que oui, FxM, même que la question de nol m'a rappelé la célèbre chanson
:
Retiens la nuit
Pour nous deux jusqu'à la fin du monde
Retiens la nuit
Pour nos cours dans sa course vagabonde
Serre-moi fort contre ton corps
Il faut qu'à l'heure des folies
Le grand amour raye le jour
Et nous fasse oublier la vie.
Retiens la nuit
sauf que moi, à ces heures, je suis déjà sous la couette d'où je sors à
l'instant L comme disait ma vieille voisine
jps

"FxM" a écrit dans le message de news:
e9lO$z$
Bonsoir,

Un exemple tout juste testé [n'est-ce pas Jean-Paul ? :o) ]

Sub test()
lx = [A:IV].Find("*", [A:IV].Item(1), , , , xlPrevious).Row
For r = lx To 1 Step -1
With Intersect(Range("A1:Z1").EntireColumn, Range("A" & r).EntireRow)
If .Cells.Count = Application.CountBlank(.Cells) Then
.EntireRow.Delete shift:=xlUp
End If
End With
Next r
End Sub

@+
FxM


Bonsoir et merci à celles et à ceux qui nous répondent, ainsi qu'aux
auteurs
d'exemples
qui nous facilitent la vie (et rallongent nos nuits)


sous excel 97 avec VBA
je cherche à supprimer les lignes "vides" des pages que je vais imprimer
j'ai determiné le nombre de colonnes à imprimer et je veux uniquement
effacer les lignes
dans lesquelles il n'y rien dans les colonnes selectionnées
le nombre de colonnes est stocké dans une variable
mais lorsque j'ai voulu utiliser une formule du genre

For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Range("r: nb_col_a_imp")) Then Rows(r).Delete
Next r

err 1004
la methode range de l'objet global à echoué
et sur aide la rubrique n'existe pas

si je convertit la variable en texte c'est pareil
txtnbcol = Chr(nb_col_a_imp + 64)

une idée luxmineuse ???

merci de votre aide





Avatar
nol
bonjour à vous
merci des reponses et bien qu'elles ne satifassent pas totallement mon
besoin je ne dirais pas que noir c'est noir
en fait l' exemple que vous me suggerrez n'efface que les lignes dans
lesquelles il n'y a rien
et moi je veux pouvoir selectionner une serie de colonnes successives (
celles à imprimer)
j'ai donc une inputbox dans laquelle je rentre le nombre de colonnes à
imprimer
et je ne veux supprimer que lignes entièrement vides sur cette plage depuis
la fin de l'onglet

donc mon pb c'est de parametrer mon effaceur en fonction du mombre de
colonnes à imprimer
et aussi bien dans l' exemple de JB que dans celui de FxM (qui marche mais
que je n'ai pas compris)
je ne vois pas ou parametrer

Ne me quittes pas
il faut oublier
oublier le temps des malendus
et le temps perdu à savoir pourquoi
( d' un autre JB si j'ose )

"JB" a écrit dans le message de
news:
Bonjour,

Cellules vides en colonne A:
On Error Resume Next
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete


Cellules vides sur toutes les colonnes:

For i = [A65000].End(xlUp).Row To 1 Step -1
If Application.CountA(Rows(i)) = 0 Then
Rows(i).Delete
End If
Next i

Cordialemnt JB

Bonsoir et merci à celles et à ceux qui nous répondent, ainsi qu'aux
auteurs

d'exemples
qui nous facilitent la vie (et rallongent nos nuits)


sous excel 97 avec VBA
je cherche à supprimer les lignes "vides" des pages que je vais imprimer
j'ai determiné le nombre de colonnes à imprimer et je veux uniquement
effacer les lignes
dans lesquelles il n'y rien dans les colonnes selectionnées
le nombre de colonnes est stocké dans une variable
mais lorsque j'ai voulu utiliser une formule du genre

For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Range("r: nb_col_a_imp")) Then Rows(r).Delete
Next r

err 1004
la methode range de l'objet global à echoué
et sur aide la rubrique n'existe pas

si je convertit la variable en texte c'est pareil
txtnbcol = Chr(nb_col_a_imp + 64)

une idée luxmineuse ???

merci de votre aide


Avatar
nol
comme je sais pas si vous voyez les réponses faite à JB je renvoie le
message


bonjour à vous
merci des reponses et bien qu'elles ne satifassent pas totallement mon
besoin je ne dirais pas que noir c'est noir
en fait l' exemple que vous me suggerrez n'efface que les lignes dans
lesquelles il n'y a rien
et moi je veux pouvoir selectionner une serie de colonnes successives (
celles à imprimer)
j'ai donc une inputbox dans laquelle je rentre le nombre de colonnes à
imprimer
et je ne veux supprimer que lignes entièrement vides sur cette plage depuis
la fin de l'onglet

donc mon pb c'est de parametrer mon effaceur en fonction du mombre de
colonnes à imprimer
et aussi bien dans l' exemple de JB que dans celui de FxM (qui marche mais
que je n'ai pas compris)
je ne vois pas ou parametrer

Ne me quittes pas
il faut oublier
oublier le temps des malendus
et le temps perdu à savoir pourquoi
( d' un autre JB si j'ose )


"FxM" a écrit dans le message de
news:e9lO$z$
Bonsoir,

Un exemple tout juste testé [n'est-ce pas Jean-Paul ? :o) ]

Sub test()
lx = [A:IV].Find("*", [A:IV].Item(1), , , , xlPrevious).Row
For r = lx To 1 Step -1
With Intersect(Range("A1:Z1").EntireColumn, Range("A" & r).EntireRow)
If .Cells.Count = Application.CountBlank(.Cells) Then
.EntireRow.Delete shift:=xlUp
End If
End With
Next r
End Sub

@+
FxM


Bonsoir et merci à celles et à ceux qui nous répondent, ainsi qu'aux
auteurs


d'exemples
qui nous facilitent la vie (et rallongent nos nuits)


sous excel 97 avec VBA
je cherche à supprimer les lignes "vides" des pages que je vais imprimer
j'ai determiné le nombre de colonnes à imprimer et je veux uniquement
effacer les lignes
dans lesquelles il n'y rien dans les colonnes selectionnées
le nombre de colonnes est stocké dans une variable
mais lorsque j'ai voulu utiliser une formule du genre

For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Range("r: nb_col_a_imp")) Then Rows(r).Delete
Next r

err 1004
la methode range de l'objet global à echoué
et sur aide la rubrique n'existe pas

si je convertit la variable en texte c'est pareil
txtnbcol = Chr(nb_col_a_imp + 64)

une idée luxmineuse ???

merci de votre aide






Avatar
FxM
Re-

A priori, tout le monde devrait voir toutes les réponses si l'on utilise
les bons outils, que les serveurs soient synchronisés et que la censure
ne soit pas encore passée par là.

--- oublions pour l'instant le fait que toute la ligne soit vide ou
seulement une partie : Pourrais-tu confirmer que tu veuilles supprimer
les lignes et pas seulement les masquer ? Comme tu parles de colonnes à
imprimer ...

Si tu veux masquer, cette action ne peut avoir lieu que sur des lignes
ou colonnes entières. Par contre, il reste possible de ne supprimer que
quelques cellules.

--- reprenons toute la ligne ou seulement une partie :
Si tu ne cherches à supprimer la ligne complète si les colonnes B à G
sont vides, voici les modifs :
J'en ai profité pour expliciter les différentes lignes.
Reste à prendre le contenu de ton inputbox pour aller modifier ce qui
devrait l'être.


Sub test()
'trouve la dernière ligne sur les colonnes A à IV.
'ceci est la ligne contenant la plus basse des cellules remplies
lx = [A:IV].Find("*", [A:IV].Item(1), , , , xlPrevious).Row

'parcourir les lignes du bas vers le haut
'indispensable pour éviter certains problèmes durant la suppression
For r = lx To 1 Step -1

'espace commun à deux zones :
'- les colonnes complètes, ici B à G <- inputbox ??
'- une ligne entière (celle de numéro r)
With Intersect(Range("B1:G1").EntireColumn, Range("A" & r).EntireRow)

'.cells.count est le nombre total de cellules de l'espace
'.CountBlank(.Cells) est le nombre de cellules vides
'si ces nombres sont égaux, l'espace est vide
If .Cells.Count = Application.CountBlank(.Cells) Then

'dans ce cas, détruire la ligne complète
.EntireRow.Delete shift:=xlUp
'terminer le if, le with et passer à la ligne précédente
End If
End With
Next r
End Sub


Comme tu indiques que ton inputbox contient un nombre (attention =
inputbox = string!), je vais supposer que la colonne de départ est la 1.
Non testé :
With Intersect(columns("1:" & inputbox1).EntireColumn, Range("A" &
r).EntireRow)


A suivre ...

@+
FxM




comme je sais pas si vous voyez les réponses faite à JB je renvoie le
message
bonjour à vous
merci des reponses et bien qu'elles ne satifassent pas totallement mon
besoin je ne dirais pas que noir c'est noir
en fait l' exemple que vous me suggerrez n'efface que les lignes dans
lesquelles il n'y a rien
et moi je veux pouvoir selectionner une serie de colonnes successives (
celles à imprimer)
j'ai donc une inputbox dans laquelle je rentre le nombre de colonnes à
imprimer
et je ne veux supprimer que lignes entièrement vides sur cette plage depuis
la fin de l'onglet

donc mon pb c'est de parametrer mon effaceur en fonction du mombre de
colonnes à imprimer
et aussi bien dans l' exemple de JB que dans celui de FxM (qui marche mais
que je n'ai pas compris)
je ne vois pas ou parametrer

Ne me quittes pas
il faut oublier
oublier le temps des malendus
et le temps perdu à savoir pourquoi
( d' un autre JB si j'ose )


"FxM" a écrit dans le message de
news:e9lO$z$
Bonsoir,

Un exemple tout juste testé [n'est-ce pas Jean-Paul ? :o) ]

Sub test()
lx = [A:IV].Find("*", [A:IV].Item(1), , , , xlPrevious).Row
For r = lx To 1 Step -1
With Intersect(Range("A1:Z1").EntireColumn, Range("A" & r).EntireRow)
If .Cells.Count = Application.CountBlank(.Cells) Then
.EntireRow.Delete shift:=xlUp
End If
End With
Next r
End Sub

@+
FxM


Bonsoir et merci à celles et à ceux qui nous répondent, ainsi qu'aux
auteurs


d'exemples
qui nous facilitent la vie (et rallongent nos nuits)


sous excel 97 avec VBA
je cherche à supprimer les lignes "vides" des pages que je vais imprimer
j'ai determiné le nombre de colonnes à imprimer et je veux uniquement
effacer les lignes
dans lesquelles il n'y rien dans les colonnes selectionnées
le nombre de colonnes est stocké dans une variable
mais lorsque j'ai voulu utiliser une formule du genre

For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Range("r: nb_col_a_imp")) Then Rows(r).Delete
Next r

err 1004
la methode range de l'objet global à echoué
et sur aide la rubrique n'existe pas

si je convertit la variable en texte c'est pareil
txtnbcol = Chr(nb_col_a_imp + 64)

une idée luxmineuse ???

merci de votre aide