Effacer une selection de plage par inputbox

Benjo

XLDnaute Junior
Salut à tous,

J'ai un petit soucis, je viens donc demander à l'aide auprès de cette superbe communauté.

Je souhaite avoir un bouton qui lancera une inputbox qui demande le numero de la ligne à effacer. Donnons par exemple que l'utilisateur choississe la ligne x

Je voudrais que ca efface automatique la selection qui va de BX à QX (B et Q etant les colonnes fixées, et X la ligne choisie par l'utilisateur).

J'ai immaginé un truc, mais ca fonctionne pas :d :

Code:
Private Sub CommandButton1_Click()
    Dim ligne
    If MsgBox("Voulez-vous reellement effacer une ligne ?", vbYesNo) = vbYes Then
       
    ligne = InputBox("Quel est le numéro de la ligne à effacer?")
    Sheets("feuil3").Select
    Range("ligne,B:ligne,Q").Select
    Selection.ClearContents
      
    Else
    End If
end sub

Sachant que la selection choisie devra etre effacée dans près de 8 feuilles différentes.

De plus, mais c'est accessoire, si c'est possible, peut on remplacer le inputbox par une liste déroulante de nom provenant d'une colonne dans une autre feuille. ?

Je m'explique : sur la feuille 1 j'ai sur la colonne A la colonne "nom", donc sur toutes les lignes, j'ai pleins de nom.
Peut on faire apparaitre dans une liste déroulante les noms qui sont dans la colonne A, et quand on choisi un nom, ca selectionne directement le numero de la ligne du nom... Mais bref, si j'ai pas été clair, c'est pas tres grave, oubliez ca.

En tout cas, merci beaucoup de votre aide ;)

@+
 

tototiti2008

XLDnaute Barbatruc
Re : Effacer une selection de plage par inputbox

Bonjour à tous,

Même si ce que te propose Staple est plus abouti, j'aimerais bien savoir pourquoi
Code:
Range("B" & ligne & ":Q" & ligne).Select

ne fonctionne pas. je viens de tester et aucun soucis...

je fais remarquer que je suis aussi plutôt adepte de Application.Inputbox à la place de Inputbox
 

Benjo

XLDnaute Junior
Re : Effacer une selection de plage par inputbox

Merci bien les amis, ca fonctionne.

Mais vous avez raison, ca peut etre interressant d'utiliser application. Est il possible que lorqu'on appuis sur le bouton "Yes", un feuille particulière soit ouverte, et que l'utilisateur appuis sur une cellule précise (par exemple C12), ca efface automatiquement la plage C12:Q12 ?
 

tototiti2008

XLDnaute Barbatruc
Re : Effacer une selection de plage par inputbox

Bonjour à tous,

mais oui c'est possible :

Code:
Sub toto()
Dim ligne as long, Plg as range
If MsgBox("Voulez-vous reellement effacer une ligne ?", vbYesNo) = vbYes Then
sheets(1).activate
set Plg = Application.InputBox("Sélectionnez une cellule de la ligne à effacer !", _
"Effacement de la sélection", Type:=8)

Sheets(1).Range("B" & plg.row & ":Q" & plg.row).ClearContents
Else
End If
End Sub
 

Benjo

XLDnaute Junior
Re : Effacer une selection de plage par inputbox

Yes, c'est top, ca fonctionne niquel !

Par contre, comme j'ai beaucoup de feuille j'ai essayé de faire une boucle; et ca donne ca :

Code:
Sub suppression_ligne()

Dim ligne As Long, Plg As Range, article As String



If MsgBox("voulez vous supprimer ?vbYesNo) = vbYes Then
for i = 2 to 8

Sheets(i).Activate
Set Plg = Application.InputBox("Sélectionnez l'article à effacer", _
"Effacement de la sélection", Type:=8)
article = Plg

Sheets(i).Range("B" & Plg.Row & ":Q" & Plg.Row).ClearContents

next 

MsgBox ("L'article " & article & " est définitement effacé de TOUS les services.")

Else
MsgBox ("Rien n'est effacé!")

End If

End Sub

Mais ca marche pas...

une idée ?

Merci à tous ;)
 

Benjo

XLDnaute Junior
Re : Effacer une selection de plage par inputbox

j'ai essayé avec un with, ca donne ca :

Code:
Sub suppression_ligne2()

Dim  Plg As Range, article As String


If MsgBox("voulez vous supprimer ?", vbYesNo) = vbYes Then




Sheets("article et stock").Activate

Set Plg = Application.InputBox("Sélectionnez l'article à effacer", _
"Effacement de la sélection", Type:=8)
article = Plg

For i = 3 To 13
with Sheets(i).Range("B" & Plg.Row & ":Q" & Plg.Row).ClearContents

end with

Next i

MsgBox ("L'article " & article & " est définitement effacé de TOUS les services.")

Else
MsgBox ("Rien n'est effacé!")

End If

End Sub

Mais ca bloque au with...
 

wilfried_42

XLDnaute Barbatruc
Re : Effacer une selection de plage par inputbox

bonjour à tous

soit tu ecris
Code:
For i = 3 To 13
with Sheets(i).Range("B" & Plg.Row & ":Q" & Plg.Row)
      .ClearContents
end with
Next i
soit :
Code:
For i = 3 To 13
     Sheets(i).Range("B" & Plg.Row & ":Q" & Plg.Row).ClearContents
Next i

quand tu uitlises with, c'est avec un objet, pas une methode
 

wilfried_42

XLDnaute Barbatruc
Re : Effacer une selection de plage par inputbox

re:

si c'est possible

for i = 3 to 3 implique que tu boucles de la feuille 3 à la feuille 13 soit 11 feuilles

sheets(i) ---> indique que tu utilises l'index de la feuille et nom son nom

n'ayant pas ton fichier, je ne sais pas comment il est fait, maintenant si de 3 à 13, c'est le nom de tes feuilles elors il faut ecrire sheets("" & i)

mais sans un exemple de ton fichier dur de repondre car la syntaxe que je t'ai donnée est ok
 

Benjo

XLDnaute Junior
Re : Effacer une selection de plage par inputbox

en fait j'ai compris pkoi ca fonctionne pas,
car il fallait pas faire de 3 à 13 (au passage, je parle bien de l'indexation des feuilles et non des noms).
Chez moi, ca fonctionne en deux étapes:

sheets("feuil3") blabla

Puis
For i = 4 to 13

sheets (i) blavla


Voili voilou.

Merci beaucoup,

grace à vous, j'ai reussi un faire un fichier tip top :D

@++
 

Discussions similaires

Réponses
8
Affichages
547

Membres actuellement en ligne

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12