Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

supprimer cellule

Mitch

XLDnaute Occasionnel
Re-Bonsoir une petite aide SVP je voudrais supprimer les cellules de A à G mon code me supprime la ligne entiere
Merci

Private Sub Supprimer_Click()
Dim Msg As String, Style, Title As String, MyValue As Variant
'Vérification avant suppression
Msg = " Voulez-vous vraiment supprimer cette ligne ?" & Chr(10) _
& " " & Chr(10)
Style = vbOKCancel + vbCritical + vbDefaultButton2 ' Définit les boutons.
Title = "VERIFICATION AVANT SUPPRESSION !" ' Définit le titre.
MyValue = MsgBox(Msg, Style, Title)
If MyValue = 2 Then Exit Sub

' Suppression de la ligne
ActiveCell.EntireRow.Delete
Unload Me
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : supprimer cellule

Bonsoir
Il m'est évident que c'est une ligne d'une plage de plusieurs colonnes contiguës alors:
VB:
Intersect(ActiveSheet.[A:G], ActiveCell.EntireRow).Delete xlShiftUp
À+
 

Mitch

XLDnaute Occasionnel
Re : supprimer cellule

Bonjour je revient sur mon post car la reponse de Dranreb me convient parfaitement mais j'aimerais en même temps que ca supprime les cellules BJ,BK,BL de la feuille " global " et que ca vide les cellules B,C de la feuille " suivi appro "
j'ai essayer avec With Sheets(" ") pour definir la feuille mais ca marche pas
Merci
 

Dranreb

XLDnaute Barbatruc
Re : supprimer cellule

Normal, il ne peut y avoir d'intersection entre la cellule active et une plage d'une autre feuille.
Dans ce cas:
VB:
FGlobal.[BJ:BK].Rows(LSup).Delete xlShiftUp
FSuiApp.[B:C].Rows(LEff).ClearContents
Avec FGlobal: le CodeName de la feuille nommée "global" dans Excel
FSuiApp: le CodeName de la feuille nommée "suivi appro" dans Excel
LSup: une variable As Long contenant le numéro de la ligne à supprimer
LEff: une variable As Long contenant le numéro de la ligne à effacer

À+
 
Dernière édition:

Mitch

XLDnaute Occasionnel
Re : supprimer cellule

excuse moi mais le CodeName doit être dans ThisWorkbook car j'ai une erreur
Bon je n'y arrive pas je pense que c'est la la feuille "suivi appro" qui est deja nommée
je joint un bout de mon fichier

Lien supprimé
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : supprimer cellule

Oui c'est ça. S'il s'agit d'une feuille d'un autre classeur que celui qui porte le projet VBA contenant la macro (ce que je ne pouvais deviner), il faut passer par votre variable F_S déclarée As Worksheet comme il se doit.
Juste une remarque: N'utilisez la collection Sheets d'objets banalisés que lorsque vous voulez traiter à la fois les Worksheet et les Chart. Pour ne traiter que des objets Worksheet utilisez la collection Worksheets.
À+
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : supprimer cellule

tes explications me donne des sueurs froide
Il n'y a pas de quoi. Pourquoi ?
Si c'est à cause de ma remarque, Sheets ça marche aussi mais c'est plus "brouillon" que Worksheets si on est sûr que c'est un Worksheet qu'on veut, et ça entraine ce qu'on appelle une liaison tardive.
Par exemple le paramètre passé aux procédures évènement relatives aux feuilles du module ThisWorkbook est un élément de la collection Sheets. Du coup il n'est ni Worksheet ni Chart puisqu'il peut être l'un ou l'autre, il est simplement Object, et des recherches supplémentaires sont nécessaire à l'exécution pour retrouver trace de ses propriétés et méthodes.
À+
 
Dernière édition:

Mitch

XLDnaute Occasionnel
Re : supprimer cellule

marche pas vois pas ou est l'erreur

Private Sub Workbook_Open()
Eclairage
Dim F_S As Worksheet 'Feuille source
Dim F_D As Worksheet 'Feuille Destination
Dim F_G As Worksteet
Dim Lig_S As Long 'Ligne source
Dim Lig_D As Long 'Ligne destination
Dim Lig_Sup As Long
Dim Lig_Eff As Long
'MEI **********************************************
'Définition des feuilles
Set F_S = Sheets("suivi appro") 'feuille source = onglet(suivi appro)
Set F_D = Sheets("chantier posé") 'feuille destination = onglet(chantier posé)
Set F_G = Sheets("global")
'définition des lignes
Lig_D = F_D.Range("C65536").End(xlUp).Row + 1
Lig_Sup = F_G
Lig_Eff = F_S
'Ligne destination est la première de C vide
F_G.[BJ:BK].Rows(Lig_Sup).Delete xlShiftUp
F_S.[B:C].Rows(Lig_Eff).ClearContents
 

Dranreb

XLDnaute Barbatruc
Re : supprimer cellule

Vous avez suivi mes indications, mais vous essayez d'affecter des objets Worksheet à des entiers Long. Ça doit sûrement provoquer une erreur d'incompatibilité de type !
Par quelle opération surnaturelle espériez vous que cela allait initialiser ces entiers longs à des numéros de lignes dans ces deux autres feuilles ?
Si j'avais eu les moyens de vous dire comment les initialiser je l'aurais fait ! Mais est-ce que vous savez seulement vous même quelles sont les lignes à supprimer et à effacer ??? À voir ce que vous avez écrit on ne le dirait pas !
À+
 

Mitch

XLDnaute Occasionnel
Re : supprimer cellule

Bonjour à tous je m'excuse mais je n'y arrive pas même avec l'aide de l'enregistreur macro je loupe quelque chose mais je vois pas ou ,
la macro ce deroule sans incident mais ne m'efface pas les lignes
 

Pierrot93

XLDnaute Barbatruc
Re : supprimer cellule

Bonjour Mitch, Bernard

pas tout suivi, mais regarde ceci, si cela peut t'aider à avancer...

Code:
With Workbooks("NomClasseur.xls").Sheets("NomFeuille")
    .Range("A1:G" & .Range("C65536").End(xlUp).Row).Delete xlShiftUp
End With

bonne soirée
@+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…