Bonjour,
Ci dessous une formule VBA que j’avais mis au point avec l’aide d’une amie.
Elle fonctionne très bien pour mon utilisation, sauf, que je ne comprends pas pourquoi elle efface les Cellules B4, D4 et F4 de la feuille Formulaire…Je ne vois pas où dans le code VBA cette action est demandée. Des avis?
Sub SAISIE()
'On déclare les variables
Dim data As Variant
Dim i As Byte
'#######################################################################################
'########################### INSERTION INFO DANS TABLEAU CRA ###########################
'#######################################################################################
ActiveSheet.Unprotect Password:="xxxxxxx" ' en début de macro
Dim MaPlage As Range, Cel As Range
Set MaPlage = Sheets(« FORMULAIRE »).Range(« B5,D5 »)
For Each Cel In MaPlage 'pour toutes les cellules de la plage
If Cel.Value = « » Then 'si elle est vide alors
'message à l’utilisateur
MsgBox « La cellule DATE ou CLIENT n’est pas remplie. »
'sortie de la procédure
Exit Sub
End If
Next
'Avec la feuille "FORMULAIRE", on remplie la variable data avec un tableau contenant les données du rdv
With Worksheets("FORMULAIRE")
data = Array(.Range("B5").Value, .Range("F5").Value, .Range("B8").Value, .Range("H5").Value, _
.Range("J5").Value, .Range("N5").Value, .Range("P5").Value, _
.Range("D8").Value, .Range("O9").Value, .Range("G9").Value, "", "")
End With
'Avec la feuille "CRA", on rajoute une ligne et on la remplie avec les données de data
With Worksheets("CRA").ListObjects("Tableau_CRA")
.ListRows.Add
.DataBodyRange.Rows(.DataBodyRange.Rows.Count) = data
End With
'#######################################################################################
'####################### INSERTION INFO DANS TABLEAU INSTALLATEUR ######################
'#######################################################################################
'Pour chacun des installateurs possible
For i = 13 To 25 Step 6
'Si des informations à propos de l'installateur sont entrées, alors
If Worksheets("FORMULAIRE").Range("C" & i).Value <> "" Then
'Avec la feuille "FORMULAIRE", on remplie la variable data avec un tableau contenant les données de l'installateur
With Worksheets("FORMULAIRE")
data = Array(.Range("B5").Value, .Range("C" & i).Value, .Range("F" & i).Value, .Range("I" & i).Value, _
.Range("M" & i).Value, .Range("P" & i).Value, .Range("B8").Value, _
.Range("C" & i + 2).Value, "", "", "", "", "", "", "", "")
End With
'Avec la feuille "CRA", on rajoute une ligne et on la remplie avec les données de data
With Worksheets("Liste Installateur").ListObjects("Tableau_ListeInstallateur")
.ListRows.Add
.DataBodyRange.Rows(.DataBodyRange.Rows.Count) = data
End With
End If
Next
'#######################################################################################
'######################## NETTOYAGE DES CELLULES DU FORMULAIRE #########################
'#######################################################################################
'Avec la feuille "FORMULAIRE", on nettoie les cellules
With Worksheets("FORMULAIRE")
.Range("B5:D5").ClearContents
.Range("D8:D8").ClearContents
.Range("G9:O9").ClearContents
.Range("C13:C27").ClearContents
.Range("F13:F25").ClearContents
.Range("F13:F25").ClearContents
.Range("I13:I25").ClearContents
.Range("M13:M25").ClearContents
.Range("P13:P25").ClearContents
End With
Sheets("Nombre de RDV").Select
Range("A5").Select
Selection.Group Start:=True, End:=True, Periods:=Array(False, False, False, _
False, True, False, False)
Sheets("FORMULAIRE").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True, Password:="xxxxxxx"
End Sub