Supprimer une colonne sur un critère

Fred -  
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Une valeur (calculée) est dans une case de Sheet1.

Cette valeur est (peut-être) une entête de colonne de Sheet2

Comment supprimer cette colonne de Sheet2 si elle existe.

Merci d'avance de votre aide.

Fred

1 réponse

Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour,

Avec une macro
Sub Supprimer()
Dim Valeur As String
Dim C As Range
Valeur = InputBox("Veuillez indiquer l'adresse de la cellule qui contient la valeur à rechercher", "RECHERCHE", "Sheet1!$A$1")
With Sheets("Sheet2").Rows(1)
Set C = .Find(Range(Valeur).Value, , xlValues, xlWhole)
If Not C Is Nothing And C <> "" Then
C.EntireColumn.Delete
End If
End With
End Sub

A+
0
Fred... Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup Gyrus,

Rapidité de la réponse, efficacité et exactitude.

L'idée est de supprimer une réservation de salle de réunion, précédemment journalisée lors de sa création dans une nouvelle colonne de l'onglet WORK. L'entête de chaque colonne de WORK est une concaténation du nom de la salle et de ses date/heure de début de réservation.

Merci encore, le code pour info :


Sub SUPPRIMER()
'
' Supprimer une réservation
'
Sheets("FICHE_RESA").Select

Range("B19").Select
ActiveCell.FormulaR1C1 = "=CONCATENATE(R14C2,R15C2)"
Range("B20").Select
ActiveCell.FormulaR1C1 = _
"=IF(ISERROR(HLOOKUP(CONCATENATE(R14C2,R15C2),WORK!R1,1,FALSE)),""Libre"",""Occupée"")"

If Range("B20") = "Occupée" Then DELETERESA
If Range("B20") = "Libre" Then MsgBox "Salle Libre"
Range("B19:B20").Select
Selection.ClearContents
Range("A1").Select

End Sub
Sub DELETERESA()
Dim C As Range
Valeur = "FICHE_RESA!$B$19"
With Sheets("WORK").Rows(1)
Set C = .Find(Range(Valeur).Value, , xlValues, xlWhole)
If Not C Is Nothing And C <> "" Then
C.EntireColumn.delete
End If
End With
Sheets("FICHE_RESA").Select
Range("B19:B20").Select
Selection.ClearContents
Range("A1").Select
MsgBox "Réservation Supprimée"
End Sub
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526 > Fred... Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Il me semble que tu fais bien des détours pour un résultat simple.
Essaie ce code
Sub Supprimer()
Dim WsS As Worksheet, WsC As Worksheet
Dim Valeur As String
Dim C As Range
Set WsS = Worksheets("FICHE_RESA")
Set WsC = Worksheets("WORK")
Valeur = WsS.[B14] & WsS.[B15]
Set C = WsC.Rows(1).Find(Valeur, , xlValues, xlWhole)
If Not C Is Nothing Then
If C <> "" Then
C.EntireColumn.Delete
MsgBox "Réservation Supprimée"
End If
Else
MsgBox "Salle Libre"
End If
WsS.Range("B19:B20").ClearContents
WsS.Select
Range("A1").Select
End Sub

A+
0