Salut le Forum,
Pourriez-vous m’aider à développer une macro pour faire copier des données saisies sur un formulaire et les transferts à une base de données au deuxième feuille
L’objectif est de :
Faire copie les données depuis le formulaire (Feuil1) et les recopies sur la base de donne feuil2
Si un champ est vide alors un message d’alerte se déclenche afin de remplir les informations manquantes
Si seulement la première ligne est remplie mais la deuxième non alors les informations résignaient (ligne 1) seront transférés à la BD
À partir d’une macro déjà utilisée dans un autre projet j’ai essayé de l’appliquer sur ce formulaire mais je ne me suis bloqué sur le fait que :
Si la deuxième ligne est non renseignée alors le message d’alerte se déclenche même si la deuxième ligne est vide
Ci-après le code ainsi que le fichier Excel ci joint
Merci d'avance pour l'aide.
Pourriez-vous m’aider à développer une macro pour faire copier des données saisies sur un formulaire et les transferts à une base de données au deuxième feuille
L’objectif est de :
Faire copie les données depuis le formulaire (Feuil1) et les recopies sur la base de donne feuil2
Si un champ est vide alors un message d’alerte se déclenche afin de remplir les informations manquantes
Si seulement la première ligne est remplie mais la deuxième non alors les informations résignaient (ligne 1) seront transférés à la BD
À partir d’une macro déjà utilisée dans un autre projet j’ai essayé de l’appliquer sur ce formulaire mais je ne me suis bloqué sur le fait que :
Si la deuxième ligne est non renseignée alors le message d’alerte se déclenche même si la deuxième ligne est vide
Ci-après le code ainsi que le fichier Excel ci joint
Merci d'avance pour l'aide.
VB:
Sub ctrl_1()
Dim Reponse As Byte
Dim PL As Range, Cel As Range, Lettre$, Message$
Dim Mavariable As String
'Mavariable = Feuil1.Range("K9").Value
Set PL = Feuil1.Range("E3,G3,E6,G6,I6,E9,G9,I9")
For Each Cel In PL
Select Case Cel.Address(False, False, xlA1)
Case "E3": Lettre = "'Commande'"
Case "G3": Lettre = "'Date'"
Case "E6": Lettre = "'Article'"
Case "G6": Lettre = "'Réf.'"
Case "I6": Lettre = "'Matricule'"
Case "E9": Lettre = "'Article'"
Case "G9": Lettre = "'Réf."
Case "I9": Lettre = "'Matricule'"
End Select
Select Case Cel.Text
Case Is = ""
Cel.Interior.Color = RGB(255, 46, 46)
If Message = "" Then Message = "Champ(s) non renseigné(s) : " & vbLf & vbLf & Lettre Else Message = Message & ", " & Lettre
Case Else: Cel.Interior.ColorIndex = xlColorIndexNone
Range("E59,J59").Interior.Color = RGB(221, 235, 247)
End Select
Next Cel
If Message <> "" Then
MsgBox Message & vbLf & vbLf & vbLf & "Veuillez saisir le champ signalé (s) ", vbCritical + vbOKOnly, "Erreur de saisie"
Else
Feuil2.Range("B9999").End(xlUp).Offset(1, 0) = Feuil1.Range("E3")
Feuil2.Range("C9999").End(xlUp).Offset(1, 0) = Feuil1.Range("G3")
Feuil2.Range("D9999").End(xlUp).Offset(1, 0) = Feuil1.Range("E6")
Feuil2.Range("E9999").End(xlUp).Offset(1, 0) = Feuil1.Range("G6")
Feuil2.Range("F9999").End(xlUp).Offset(1, 0) = Feuil1.Range("I6")
Feuil2.Range("B9999").End(xlUp).Offset(1, 0) = Feuil1.Range("E3")
Feuil2.Range("C9999").End(xlUp).Offset(1, 0) = Feuil1.Range("G3")
Feuil2.Range("D9999").End(xlUp).Offset(1, 0) = Feuil1.Range("E9")
Feuil2.Range("E9999").End(xlUp).Offset(1, 0) = Feuil1.Range("G9")
Feuil2.Range("F9999").End(xlUp).Offset(1, 0) = Feuil1.Range("I9")
Reponse = MsgBox(vbCr & " " & "Les données ont bien été enregistrées" & vbCr & " " & vbCr & " " & "Voulez-vous effacer les champs de saisie ?" _
, vbInformation + vbYesNo, "Enregistrement effectué...")
Dim i As Long, k As Long
With Feuil2
k = 1
For i = 2 To .Range("B" & .Rows.Count).End(xlUp).Row
If IsNumeric(.Range("A" & i)) And .Range("B" & i) <> "" Then
.Range("A" & i) = k
k = k + 1
Else
End If
Next i
End With
If Reponse = 6 Then clear_dn_1
End If
End Sub