Variables sur no de ligne ou plage de lignes

DIDPRO

XLDnaute Nouveau
Bonjour à tous,

N'étant pas un expert (encore) sur visual basic, je voudrais savoir si on peut affecter un n° de ligne ou une plage de ligne en variable pour pouvoir à la demande masquer la plage demandée par inputbox.

Merci à tous pour vos futurs réponses.

Did,:)
 

tototiti2008

XLDnaute Barbatruc
Re : Variables sur no de ligne ou plage de lignes

Bonjour DIDPRO,

Sur le principe, Oui, comment veux-tu indiquer les lignes à masquer ?
en tapant leurs numéros dans l'inputbox ou en demandant à l'utilisateur de sélectionner des cellules des lignes concernées ?
 

Pierrot93

XLDnaute Barbatruc
Re : Variables sur no de ligne ou plage de lignes

Bonjour Didpro, Toto:)

remplace ceci :
Code:
ActiveSheet.Range("A" & Rep1 & ":A" & Rep2).EntireRow.Hidden = True
par cela :
Code:
ActiveSheet.Range("A" & Rep1 & ":A" & Rep2).Delete

bonne journée
@+
 

Did

XLDnaute Nouveau
Re : Variables sur no de ligne ou plage de lignes

Bonjour Pierrot,

Cela marche quand dans ma macro, je ne fais que ça. Par contre, j'en ai besoin dans un contexte particulier à savoir que la feuille est protégée. Je passe par la macro pour la déprotéger et ensuite l'utilisateur supprime les lignes en trop, pour qu'ensuite je revérrouille la feuille.
Dans ce contexte là, il me supprime plus les lignes mais les cellules A des N° de lignes spécifiés en décalant les cellules B en A.

Si tu pouvais m'aider à comprendre, je t'en remercie ....

Did,

Ps : Ci-joint le code ...

Sub Del_Ligne()
'
' Déverrouillage de la feuille par un mot de passe "primes"
'
Range("D3").Select
ActiveSheet.Unprotect
Range("D3").Select
'
' Suppression des lignes en trop ...
'
Dim Rep1, Rep2
Rep1 = Application.InputBox(Prompt:="Premier N° de ligne à masquer", Type:=1)
Rep2 = Application.InputBox(Prompt:="Dernier N° de ligne à masquer", Type:=1)

If Rep1 = False Or Rep2 = False Then Exit Sub
ActiveSheet.Range("A" & Rep1 & ":A" & Rep2).Delete

'
' RE vérrouillage de la feuille par un mot de passe "primes"
'
Range("D3").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowDeletingRows:=True
Range("D3").Select
End Sub
 

DL_13

XLDnaute Occasionnel
Re : Variables sur no de ligne ou plage de lignes

Bonjour,

Peux être en supprimant la ligne entière et pas seulement la cellule

Code:
Sub Del_Ligne()
Dim Rep1, Rep2
' Déverrouillage de la feuille par un mot de passe "primes"
ActiveSheet.Unprotect
' Suppression des lignes en trop ...
Rep1 = Application.InputBox(Prompt:="Premier N° de ligne à masquer", Type:=1)
Rep2 = Application.InputBox(Prompt:="Dernier N° de ligne à masquer", Type:=1)
If Rep1 = False Or Rep2 = False Then Exit Sub
ActiveSheet.Range("A" & Rep1 & ":A" & Rep2).EntireRow.Delete
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowDeletingRows:=True
End Sub

Bonne journée
 

Did

XLDnaute Nouveau
Re : Variables sur no de ligne ou plage de lignes

Re Pierrot,

J'ai rajouté la boucle pour pouvoir supprimer que les lignes dont la cellule en colonne "C" est vide. Pour cela j'ai besoin de changer la valeur de 'VAL' dans la boucle For Each, mais je n'y arrive pas. Dans le code ci-joint, elle est mise en commentaire ....

Dim Rep1, Rep2, aff
Rep1 = Application.InputBox(Prompt:="Premier N° de ligne à supprimer", Type:=1)
Rep2 = Application.InputBox(Prompt:="Dernier N° de ligne à supprimer", Type:=1)
Dim val
For Each val In Range("C" & Rep1 & ":C" & Rep2)
If val.Value = 0 Or val.Value = "" Then
Range("C" & val.Row).Select
Selection.EntireRow.Delete
' val = val + 1
Rep2 = Rep2 - 1
End If
Next

Merci à toi pour tes réponses ....

Did,
 

Pierrot93

XLDnaute Barbatruc
Re : Variables sur no de ligne ou plage de lignes

Bonsoir,

essaye ceci :
Code:
Option Explicit
Sub test()
Dim Rep1 As Long, Rep2 As Long, i As Long
Rep1 = Application.InputBox(Prompt:="Premier N° de ligne à supprimer", Type:=1)
Rep2 = Application.InputBox(Prompt:="Dernier N° de ligne à supprimer", Type:=1)
For i = Rep2 To Rep1 Step -1
    If Cells(i, 3).Value = 0 Or Cells(i, 3).Value = "" Then Cells(i, 3).EntireRow.Delete
Next i
End Sub

bonne soirée
@+
 

Did

XLDnaute Nouveau
Re : Variables sur no de ligne ou plage de lignes

Re Pierrot,

Toutes mes excuses, mais il y a une erreur dans mon code, car Val doit se décrémenter lorsque la condition est remplie; ci-joint le code corrigé.
Code:
Dim Rep1, Rep2, aff
Rep1 = Application.InputBox(Prompt:="Premier N° de ligne à supprimer", Type:=1)
Rep2 = Application.InputBox(Prompt:="Dernier N° de ligne à supprimer", Type:=1)
Dim val
For Each val In Range("C" & Rep1 & ":C" & Rep2)
If val.Value = 0 Or val.Value = "" Then
Range("C" & val.Row).Select
Selection.EntireRow.Delete
' val = val - 1
Rep2 = Rep2 - 1
End If
Next

Quand la condition est rempli, on supprime la ligne et pour éviter de sauter une ligne, on décrémente val et Rep2 pour éviter de dépasser la plage donnée.

Espérant avoir été clair, je te remercie pour la suite....

Did,
 

Discussions similaires

Réponses
3
Affichages
326

Statistiques des forums

Discussions
312 684
Messages
2 090 923
Membres
104 701
dernier inscrit
NinetteCrevette