Supprimer une colonne sur un critère

Fred -  
Gyrus Messages postés 3360 Statut Membre -
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

  1. Gyrus Messages postés 3360 Statut Membre 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
    1. Fred... Messages postés 4 Statut Membre
       
      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
      1. Gyrus Messages postés 3360 Statut Membre 526 > Fred... Messages postés 4 Statut Membre
         
        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