Simplification de code
Bonjour à tous,
Dans le code suivant je suis arrivé au résultat que je voulais, par contre je suis sure qu'il y a moyen de réduire la 1ère partie mais ça je n'ai pas trouvé.
Dans ce code j'oblige les utilisateurs à remplir toute les cellules avant enregistrement, par contre je n'y suis arriver que en recopiant le code pour chaque cellule qui doit être remplie, C11--> C21, y a t-il un moyen plus simple?
Merci pour votre aide.
Option Explicit
Dim f As Worksheet
Dim lgn&
Sub Enregistrer()
Sheets("Suivi ODACS").Unprotect Password:="MDP"
Set f = Sheets("Suivi ODACS")
If Range("C11").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C11").Select
Exit Sub
End If
If Range("C12").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C12").Select
Exit Sub
End If
If Range("C13").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C13").Select
Exit Sub
End If
If Range("C14").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C14").Select
Exit Sub
End If
If Range("C15").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C15").Select
Exit Sub
End If
If Range("C16").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C16").Select
Exit Sub
End If
If Range("C17").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C17").Select
Exit Sub
End If
If Range("C18").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C18").Select
Exit Sub
End If
If Range("C19").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C19").Select
Exit Sub
End If
If Range("C20").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C20").Select
Exit Sub
End If
If Range("C21").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C21").Select
Exit Sub
End If
If WorksheetFunction.CountA(Range("C11:C21")) > 0 Then
Range("C11:C21").Copy
lgn = f.Range("B1").CurrentRegion.Rows.Count + 1
f.Range("B" & lgn).PasteSpecial xlPasteValues, Transpose:=True
Application.CutCopyMode = False
MsgBox "Votre ODACS a bien été enregistrée."
Range("C11:C21").ClearContents
End If
Sheets("Suivi ODACS").Select
Range("A1").End(xlDown).Offset(1, 0).Select
Sheets("Suivi ODACS").Protect Password:="MDP"
Sheets("Encodage ODACS").Select
Range("C11").Select
End Sub
Bonjour,
Teste ceci
Option Explicit
Dim f As Worksheet
Dim lgn&, i%
Sub Enregistrer()
Sheets("Suivi ODACS").Unprotect Password:="MDP"
Set f = Sheets("Suivi ODACS")
For i = 11 To 21
If Cells(i, "C").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Cells(i, "C").Select
Exit Sub
End If
Next i
If WorksheetFunction.CountA(Range("C11:C21")) > 0 Then
Range("C11:C21").Copy
lgn = f.Range("B1").CurrentRegion.Rows.Count + 1
f.Range("B" & lgn).PasteSpecial xlPasteValues, Transpose:=True
Application.CutCopyMode = False
MsgBox "Votre ODACS a bien été enregistrée."
Range("C11:C21").ClearContents
End If
Sheets("Suivi ODACS").Activate
Range("A1").End(xlDown).Offset(1, 0).Select
Sheets("Suivi ODACS").Protect Password:="MDP"
Sheets("Encodage ODACS").Activate
Range("C11").Select
End Sub
Bonjour M12,
Un grand merci sa fonctionne parfaitement, par contre si je n'abuse pas trop et pour moi continuer à comprendre et apprendre aurait tu quelques explications sur ce que tu as fait.
Encore merci, passe une bonne journée.
Re
tu avais cela
If Range("C11").Value = "" Then
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical
Range("C11").Select
Exit Sub
End If
et recopié l'dentique pour chaque cellule de C11 à C21
J'ai donc établi une boucle qui vérifie chaque cellule pour savoir si elle est vide
For i = 11 To 21 'pour i=11 jusqu'à 21 i prendra la valeur ajouté de 1 à chaque tour de boucle
If Cells(i, "C").Value = "" Then 'si la cellule "i" qui vaut 11 au premier tour de la colonne "C" est vide alors
MsgBox "Veuillez remplir tous les champs.", vbOKOnly + vbCritical 'j'affiche le message
Cells(i, "C").Select 'Je sélectionne la cellule ligne 11 colonne C
Exit Sub 'Je sort de la procédure
End If
Next i ' Si la cellule n'est pas vide, je recommence la boucle en ajoutant 1 soit 12, etc jusqu'à 21
M12,
Merci pour tes explications qui me permet d'en apprendre toujours plus.