Un petit problème de variable
bonsoir voir vue l'heure exelente nuit !
dans mon classeur a l'aide du bouton enregistrer present dans ma feuille facture je veux enregistrer les elements de ma page dans la base correspondant a l'entête (facture, devis ou commande) j'utilise donc le code suivant !
Sub enregistrer()
Dim xnumero As Integer
Fac_Dev = Cells(1, 9)
Xonglet = Cells(1, 17)
Dim Arr(), RefL$
If Cells(41, 10) = 0 Then Exit Sub 'total
If Cells(45, 4) = "" Then 'reglement
Else
MsgBox ("saisisé le mode de reglement")
End If
Application.ScreenUpdating = False
reponse = MsgBox("Voulez-vous enregistrer :" & Fac_Dev & " ?", vbYesNo)
If reponse = vbYes Then
ActiveSheet.PageSetup.PrintArea = "$A$1:J53"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
With Sheets(Xonglet)
x = .Range("A65536").End(xlUp).Row
xnumero = Right(.Cells(x, 1), 5)
End With
NFacture = Right(Cells(1, 10), 5) - 1
If NFacture = xnumero Then
With Sheets(Xonglet)
i = .Range("A65536").End(3)(2).Row
.Cells(i, 1) = Sheets("facture").Range("J1") ' Numéro Devis ou Facture ou commande
.Cells(i, 2) = Range("nom")
.Cells(i, 3) = Range("prenom")
.Cells(i, 4) = Range("adresse")
.Cells(i, 5) = Range("code_postal")
.Cells(i, 6) = Range("ville")
.Cells(i, 7) = Range("date")
.Cells(i, 8) = Range("client")
For x = 1 To 26
RefL = "Lig_" & x
Arr() = Range(RefL)
For k = 1 To 4
.Cells(i, 3 + k + 4 * x) = Arr(1, k)
Next
Next
.Cells(i, 113) = Range("total")
.Cells(i, 114) = Range("acompte")
.Cells(i, 115) = Range("net_a_payer")
.Cells(i, 116) = Range("reglement")
.Cells(i, 117) = Range("mail")
.Cells(i, 118) = Range("telephone")
End With
Range("B15:I40").Select
Selection.ClearContents
Range("Q8").Select
Selection.ClearContents
Range("R8").Select
Selection.ClearContents
Range("J43").Select
Selection.ClearContents
Range("D45").Select
Selection.ClearContents
Range("R1").Select
Selection.ClearContents
Range("J1").Select
Selection.ClearContents
End If
Unload Me
Sheets("facture").Select
End Sub
le problème est une erreur avec le message suivant Fac_Dev non déclaré et pourtant ma variable Fac_Dev est bien en I1 de ma facture que j'ai donc reporter com Cells (1, 9)
la je seche
merci d'avance cedcyr
Salut le forum
Lorsque Option Explicit apparaît dans un fichier, vous devez déclarer explicitement toutes les variables
à l'aide des instructions Dim ou ReDim. Si vous tentez d'utiliser un nom de variable non déclarée,
une erreur se produit au moment de la compilation.
Mytå
effectivement une grosse erreur du débutant que je suis je continue a pofinner car il bloque encore une ligne sinon apres correction ca donne ca :
Option Explicit
Dim x As Long, Fac_Dev As String, Fac_Num As String, i As Long, k, n, NFacture As Long
Dim Xonglet, Xcel, u, numero As String, reponse As Stringpuis :
Sub enregistrer()
Dim xnumero As Integer
Fac_Dev = Cells(1, 9)
Fac_Num = Cells(1, 10)
Xonglet = Cells(1, 17)
Dim Arr(), RefL$
If Cells(41, 10) = 0 Then Exit Sub 'total
If Cells(45, 3) = "" Then 'reglement
Else
MsgBox ("saisisé le mode de reglement")
If Cells(45, 3) = "" Then Exit Sub
End If
Application.ScreenUpdating = False
reponse = MsgBox("Voulez-vous enregistrer :" & Fac_Dev & Fac_Num & " ?", vbYesNo)
If reponse = vbYes Then
ActiveSheet.PageSetup.PrintArea = "$A$1:J53"
End If
With Sheets(Xonglet)
x = .Range("A65536").End(xlUp).Row
xnumero = Right(.Cells(x, 1), 5)
End With
NFacture = Right(Cells(1, 10), 5) - 1
If NFacture = xnumero Then
With Sheets(Xonglet)
i = .Range("A65536").End(3)(2).Row
.Cells(i, 1) = Sheets("facture").Range("J1") ' Numéro Devis ou Facture ou commande
.Cells(i, 2) = Range("nom")
.Cells(i, 3) = Range("prenom")
.Cells(i, 4) = Range("adresse")
.Cells(i, 5) = Range("code_postal")
.Cells(i, 6) = Range("ville")
.Cells(i, 7) = Range("date")
.Cells(i, 8) = Range("client")
For x = 1 To 26
RefL = "ligne_" & x
Arr() = Range(RefL)
For k = 1 To 4
.Cells(i, 3 + k + 4 * x) = Arr(1, k)
Next
Next
.Cells(i, 113) = Range("total")
.Cells(i, 114) = Range("acompte")
.Cells(i, 115) = Range("net_a_payer")
.Cells(i, 116) = Range("reglement")
.Cells(i, 117) = Range("mail")
.Cells(i, 118) = Range("telephone")
End With
Range("B15:I40").ClearContents
Range("Q8").ClearContents
Range("R8").ClearContents
Range("J43").ClearContents
Range("D45").ClearContents
Range("R1").ClearContents
Range("J1").ClearContents
End If
Application.ScreenUpdating = True
Sheets("facture").Select
End Submon code mets une erreur a Arr() = Range(RefL) , les cells de 1 a 8 sont bien enregistrer mais pas le reste quel betise j'ai fait la je ne vois pas ! merci de me tirer les oreilles car c'est sur il y en a une .
cedcyr