Comment faire référence à une colonne d'une plage nommée

Bonjour à tous,

J'ai nommée une plage de cellules "DESIGNATION_DES_TRAVAUX" qui correspond au corps d'un devis type (là où l'on note la désignation des articles, la quantité, le prix...).

J'essaie de supprimer les lignes vides de cette plage nommée (qui, soit dit en passant, en réalité ne sont entièrement vides car il y a les formules masquées du calcul des prix) mais je ne sais pas comment le dire.

J'ai trouvé un code mais quand je l'exécute cela me supprime toute la plage nommée.

Sub SuppLigneVIDE()
Sheets("DEVIS").Range("DESIGNATION_DES_TRAVAUX").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Et j'ai également trouvé un code pour supprimer les lignes qui contiennent le mot "code" dans la colonne A, cela fonctionne, mais là encore je n'ai pas trouvé comment lui dire de ne chercher que dans la plage nommée. Car si un jour, j'ai le mot "code" en colonne A dans une autre cellule qui n'a rien à voir avec le corps de mon devis, ben ça va supprimer la ligne, et il ne faudrait pas.

Sub SuppLigneCODE()
Dim i As Integer
For i = [A3000].End(xlUp).Row To 1 Step -1
If Cells(i, 1) = "code" Then Rows(i).Delete
Next i
End Sub

Précision très importante au vu des codes que je vois sur le net : Il m'est impossible, je pense, de procéder à un "tri" car les lignes sont construites comme suit :

Bla Bla Bla Bla Bla Bla Bla Bla
A30Bla Bla Bla Bla Bla
A30aBla Bla Bla Bla Bla H00,00
Bla Bla Bla Bla Bla Bla Bla Bla
A30Bla Bla Bla Bla Bla
A30ABla Bla Bla Bla Bla H00,00
Bla Bla Bla Bla Bla
1.1.2.3Bla Bla Bla Bla Bla 0 0,00
codeRenseigner le code 00,00

Une petite idée où cela n'est pas possible ?

bonjour pegpas,

pour supprimer les lignes dont la 2ième colonne est vide. S'il n'y a pas des cellules vides, cela cause une erreur à éviter avec "on error resume next"

Sub SuppLigneVIDE()
Sheets("DEVIS").Range("DESIGNATION_DES_TRAVAUX").columns(2).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

mais je vois des cellules fusionnées ...

Bonjour BsAlv,

Merci pour ta réponse mais je viens de tester et effectivement, il me supprime également les cellules fusionnées. Et il ne faut pas.

Mais je viens de tester ton code en changeant colonne 2 par colonne 1 et.... ça fonctionne ! Merci à toi !

En revanche j'ai voulu adapter le second code avec ton astuce, ce qui donne :

Sub SuppLigneCODE()
Dim i As Integer
For i = Sheets("DEVIS").Range("DESIGNATION_DES_TRAVAUX").Columns(1).End(xlUp).Row To 1 Step -1
If Cells(i, 1) = "code" Then Rows(i).Delete
Next i
End Sub

Mais là, cela n'a aucun effet.

re, je ne l'ai pas testé, mais vous pouvez essayer ceci (le point en face de .Cells et de .Rows est immportant en combinaison avec le With ... End With). Si vous voulez utiliser les cellules d'une autre colonne, changez le "1" de With Sheets("DEVIS").Range("DESIGNATION_DES_TRAVAUX").Columns(1)

Sub SuppLigneCODE()
     Dim i     As Integer
     With Sheets("DEVIS").Range("DESIGNATION_DES_TRAVAUX").Columns(1)     'première colonne de cette plage
          For i = .Rows.Count To 1 Step -1     'de la dernière cellule vers la première
               If .Cells(i, 1) = "code" Then .Cells(i, 1).EntireRow.Delete
          Next i
     End With
End Sub

Oh punaise ça fonctionne nickel ! Un énorme merci !

Bonne journée à vous et merci encore.

Rechercher des sujets similaires à "comment reference colonne plage nommee"