Simplification d'ecriture de code

bonsoir

sur les precieux conseil de "Lermite " j'ai pu produire le code suivant qui marche tres bien et qui contient des inputbox auxquels je tient

il y a t il un moyen de l'ecrire de facon plus simplifie histoire d'eviter les repetitions d'ecritures car il y en a pas mal

Option Explicit
Sub planning()

Dim LigDep As Long, LigFin As Long    ' La ligne
Dim ColDep As Integer, ColFin As Integer ' La colonne
Dim nom As String
 Dim Plage As Range, S As String, Cel As Range
 Dim PlageA As Range
 Dim PlageB As Range

 Set Plage = Range(cells(2, ColDep + 1), cells(2, ColFin + 1))
 Set PlageA = Range(cells(3, ColDep + 1), cells(3, ColFin + 1))
 Set PlageB = Range(cells(4, ColDep + 1), cells(4, ColFin + 1))

    nom = InputBox("entrer un nom :", "message")
    S = InputBox("Indiquez le type de marquage, CE, CA, Etc. Rien efface la sélection")

    '***************************************************************************************

    If nom = "ALBERT" Then
    ColDep = InputBox("entrez la date de debut :", "message")  'pour colonne depart
   ColFin = InputBox("entrez la date de fin :", "message")  'Pour Colonne d'arrivée

   With Range(cells(2, ColDep + 1), cells(2, ColFin + 1))
      Set Plage = Range(cells(2, ColDep + 1), cells(2, ColFin + 1))
      For Each Cel In Plage
        If Cel.Value <> "RH" Then Cel.Value = S
    Next Cel

    End With
    End If

    '***************************************************************************************

    If nom = "DUPONT" Then
    ColDep = InputBox("entrez la date de debut :", "message")  'pour colonne depart
    ColFin = InputBox("entrez la date de fin :", "message") ' pour colonne d'arrivée
   With Range(cells(3, ColDep + 1), cells(3, ColFin + 1))
      Set PlageA = Range(cells(3, ColDep + 1), cells(3, ColFin + 1))
      For Each Cel In PlageA
        If Cel.Value <> "RH" Then Cel.Value = S
    Next Cel

    End With
    End If

    '**************************************************************************************

    If nom = "FELICIEN" Then
    ColDep = InputBox("entrez la date de debut :", "message")  'pour colonne depart
    ColFin = InputBox("entrez la date de fin :", "message") 'pour la colonne d'arrivée
   With Range(cells(4, ColDep + 1), cells(4, ColFin + 1))
      Set PlageB = Range(cells(4, ColDep + 1), cells(4, ColFin + 1))
      For Each Cel In PlageB
        If Cel.Value <> "RH" Then Cel.Value = S
    Next Cel

    End With
    End If

End Sub

En vous remerciant

Salut le forum

Comme ceci

Sub planning()

Dim ColDep As Integer, ColFin As Integer
Dim nom As String
Dim Plage As Range, S As String, Cel As Range

nom = InputBox("entrer un nom :", "message")
S = InputBox("Indiquez le type de marquage, CE, CA, Etc. Rien efface la sélection")
ColDep = InputBox("entrez la date de debut :", "message")
ColFin = InputBox("entrez la date de fin :", "message")

Select Case UCase(nom)
Case "ALBERT"
    Set Plage = Range(Cells(2, ColDep + 1), Cells(2, ColFin + 1))
Case "DUPONT"
    Set Plage = Range(Cells(3, ColDep + 1), Cells(3, ColFin + 1))
Case "FELICIEN"
    Set Plage = Range(Cells(4, ColDep + 1), Cells(4, ColFin + 1))
Case Else
    Exit Sub
End Select

For Each Cel In Plage
    If Cel.Value <> "RH" Then Cel.Value = S
Next Cel

End Sub

Mytå

Merci Myta , en effet c'est deja plus compacte !

.. une petite question cependant , il arrive parfois qu'apres avoir renseigné l'inputbox nom , et le type de marquage egalement par inputbox que la periode ne soit pas demandé dans la suite des instructions ! (exemple pour le nom "FELICIEN" j'ai bien les deux première question par inputbox et par contre parfois je perd les questions sur les periodes ! alors j'ai pensé qu'il etait peut etre utile

d'ajouter à la fin du code

S=Empty

( vider la variable ) ce que j'ai fait mais cela ne regle pas l'instabilité )

Voyez vous une explication à cela ? Merci

Rechercher des sujets similaires à "simplification ecriture code"