salut le Forum ;
J’ai une macro que @Bernard_XLD m’a portée aide pour la développer, cette macro à l’usage de faire le transfert des données répartie sur plusieurs lignes à une base de données avec certaines conditions
Toutefois je voulais ajouter aux deux lignes existent une troisième ligne mais ça ne marche pas, pourrez-vous m’aider svp.
ci-après le code ainsi que le fichier Excel ci-joint
merci d'avance
J’ai une macro que @Bernard_XLD m’a portée aide pour la développer, cette macro à l’usage de faire le transfert des données répartie sur plusieurs lignes à une base de données avec certaines conditions
Toutefois je voulais ajouter aux deux lignes existent une troisième ligne mais ça ne marche pas, pourrez-vous m’aider svp.
ci-après le code ainsi que le fichier Excel ci-joint
merci d'avance
VB:
Sub Copy_3Lg()
Dim Reponse As Byte
Dim PL As Range, Cel As Range, Lettre$, Message$
Dim Mavariable As String
Set PL = Feuil1.Range("E3,G3,E6,G6,I6")
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'"
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 Application.CountA(Feuil1.Range("E9,G9,I9")) > 0 Then
Set PL = Feuil1.Range("E9,G9,I9")
For Each Cel In PL
Select Case Cel.Address(False, False, xlA1)
Case "E9": Lettre = "'Article 2'"
Case "G9": Lettre = "'Réf. 2'"
Case "I9": Lettre = "'Matricule 2'"
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
End If
If Application.CountA(Feuil1.Range("E12,G12,I12")) > 0 Then
Set PL = Feuil1.Range("E12,G12,I12")
For Each Cel In PL
Select Case Cel.Address(False, False, xlA1)
Case "E12": Lettre = "'Article 3'"
Case "G12": Lettre = "'Réf. 3'"
Case "I12": Lettre = "'Matricule 3'"
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
End If
If Not Application.CountA(Feuil1.Range("E3,G3,E6,G6,I6")) = 5 Or (Application.CountA(Feuil1.Range("E9,G9,I9")) > 0 And Application.CountA(Feuil1.Range("E9,G9,I9")) < 3 Or Application.CountA(Feuil1.Range("E12,G12,I12")) < 3) Then
MsgBox Message & vbLf & vbLf & vbLf & "Veuillez saisir le champ signalé (s) ", vbCritical + vbOKOnly, "Erreur de saisie"
Else
Feuil1.Range("E3,G3,E6,G6,I6,E9,G9,I9,E12,G12,I12").Interior.ColorIndex = xlColorIndexNone
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")
If Application.CountA(Feuil1.Range("E9,G9,I9")) = 3 Then
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")
End If
If Application.CountA(Feuil1.Range("E12,G12,I12")) = 3 Then
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("E12")
Feuil2.Range("E9999").End(xlUp).Offset(1, 0) = Feuil1.Range("G12")
Feuil2.Range("F9999").End(xlUp).Offset(1, 0) = Feuil1.Range("I12")
End If
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