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 SubEn 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 SubMytå
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