Effacer lignes d'un tableau saisie via bouton (chaine?)
Bonjour à tous,
je suis très débutante dans la vba. c'est un sujet qui m'intéresse beaucoup.
je me perfectionne tranquillement ...
je suis bloquée sur mon fichier excel,
j'ai réalisé cette formule pour effacer la saisie d'une ligne complète (5)ou sur la cellule du bout de la ligne j'ai positionné un bouton qui efface bien la ligne concernée
j'aurai souhaité reproduire le même cheminement sur les autres lignes si j'étire la série vers le bas (via une chaine ?) car le fichier se rempli via un formulaire de saisie.
J'avance lentement mais surement, voici ma saisie pour le moment sachant que j'aimerais mettre mes lignes en variable et pouvoir décaler la ligne a effacer en fonction du bouton qui s'y trouvera ( a chaque ligne se trouve un bouton "effacer".
*************************
' effacer saisie de la ligne
'***************************
Sub supprimer()
'Déclaration de la variable
Dim var1_explicite As Integer
'Attribution d'une valeur à la variable
var1 = "B" + "5" + ":" + "s" + "5"
If MsgBox("Etes-vous certain de vouloir supprimer le contenu de la ligne ?", vbYesNo, "Demande de confirmation" ) = vbYes Then
Range(var1).ClearContents
MsgBox "Le contenu de la ligne a été effacé !"
End If
End Subil me manque la variable numligne pour remplacer le (5) et pouvoir le déplacer sur les autre lignes en fonction d'où se trouve le bouton effacer? est ce possible?
merci beaucoup vraiment pour votre aide.
bonne fin de journée
cécile
Bonjour Cécile
En VBA la concaténation se fait avec le signe "&"
Si j'ai bine compris, voici le code qui devrait faire son job
*************************
' effacer saisie de la ligne
'***************************
Sub supprimer()
' Déclaration de la variable
Dim RngAdr as String, NumLig as long
' Attribution d'une valeur à la variable
NumLig = Selection.Row
RngAdr = "B" & numlig & ":S" & NumLig
If MsgBox("Etes-vous certain de vouloir supprimer le contenu des cellules " &
RngAdr & " ?", vbYesNo, "Demande de confirmation" ) = vbYes Then
Range(RngAdr).ClearContents
MsgBox "Le contenu des cellules a été effacé !"
End If
End Sub@+
Salut Cécile,
Salut Bruno,
Cécile, je ne suis pas certain que placer des boutons à l'infini sera gérable dans le temps.
Cherche plutôt, parmi tous les événements à ta disposition, des procédures faciles et adaptées aux diverses manipulations dont tu as besoin.
Par exemple, ici, j'utilise l'événement Worksheet_BeforeRightClick() pour signifier à la macro que je veux effacer une ligne.
Je lis que ta BDD va grossir : normal, c'est sa raison d'être. Ne faudrait-il pas plutôt DELETE carrément la ligne en question ?
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'
If Not Intersect(Target, Columns(2)) Is Nothing Then _
If Target <> "" Then _
Cancel = True: _
If MsgBox("Etes-vous certain de vouloir supprimer le contenu de la ligne ?", vbYesNo, "Demande de confirmation") = vbYes Then _
iRow = Target.Row: _
Range("B" & iRow & ":S" & iRow).Value = "": _
MsgBox "Le contenu de la ligne a été effacé !"
'
End SubCode à coller tel quel dans le module VBA de la feuille concernée.
Clic-droit en colonne [B:B] : remarque que la macro ne démarrera que si la cellule est complétée...
Joyeuses Fêtes !
A+
Bonjour…
C’est très bien d’utiliser un tableau structuré ** mais il faut le définir correctement (nom plutôt court et nombre de lignes cohérent).
Dans l’exemple, il est nommé Tcahierdeliaison et n’a qu’une ligne.
En le renommant TE et en le redimensionnement à 3 lignes (ou plus*), dans la fenêtre des codes de la feuille le contenant :
Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Cancel As Boolean)
If Intersect(R, [TE]) Is Nothing Then Exit Sub
If MsgBox("effacer la ligne ?", vbYesNo, "à faire ...") = vbNo Then Exit Sub
Cancel = 1: [TE].Rows(R.Row - [TE].Row + 1).ClearContents
End Sub* telle quelle, la procédure conviendra sans ce changement
** quand le support est un tableau structuré, faut différencier effacer et supprimer une ligne (voir fichier joint). On évite des lignes de celui-ci totalement vides d’où la suggestion de curulis
il ne faut pas confondre le numéro d’une de ses lignes avec celui de la feuille !
je vous remercie tous c'est vraiment très gentil
joyeuses fêtes