Usf, n'ecrit pas su la bonne ligne

bonsoir le forum,

me suis fait un classeur pour gerer ma facturation et mes stocks

ca commence par un USF qui sert d'accueil

je choisis "nouvelle facture", nouvel usf

je remplis l'usf, il me remet tout ca sur la feuille "facture"

ensuite j'ai un bouton "valider" qui a plusieurs fonctions :

... enregistre la facture au format pdf => ok

... enregistre les infos ds une page "listefactures" => ok

... copie les quantites ds la feuille "stocks" => pas ok

dans cette feuille une colonne = un produit

si la ligne est une vente alors la valeur est negative

si c'est achat elle est positive

le pb c'est que lorsque je clique sur "valider" tout est copie mais pas a la bonne place, ca rempli les cases du dessus qui sont vides plutot que de mettre tut sur la meme ligne

je vous mets mon fichier pour que vous puissiez voir exactement de quoi il en retourne

si vous voulez apporter qques critiques, n'hesitez pas

41facturation.xlsm (221.33 Ko)

Bonsoir,

Déjà, au premier coup d'oeil, quand tu utilise le mot "With" c'est pour éviter de devoir répéter la partie après With (dans l'exemple qui suit, "Sheets("Facture")"), et pour indiquer au compilateur que les lignes de code qui suivent concernent ce qui suit With, tu dois faire précéder d'un point comme ceci ".Range("b8").Value" pour dire que ça fait référence à "Sheets("Facture")" , exemple avec le code ci-dessous que j'ai un peu modifié :

Private Sub valid_Click() 'bouton "Valider"

    Dim I As Integer

    ' tout va etre coller ds le feuille "Facture"

    ' on ouvre un with pour pas repeter "sheets("Facture")" sur chaque ligne
    'Oui, mais dans ce cas, il faut indiquer au compilateur
    'l'objet de référence par un point devant
    With Sheets("Facture")

        .Range("b8").Value = numclt.Value   'numero client
        .Range("b11").Value = siret.Value   'siret
        .Range("b12").Value = tva.Value     'n° tva
        .Range("b13").Value = tel1.Value    'telephone 1
        .Range("b14").Value = tel2.Value    'telephone 2
        .Range("b15").Value = mail.Value    'mail
        .Range("c49").Value = numchq.Value  'N° cheque
        .Range("d12").Value = nomclt.Value  'copie du Nom
        .Range("d13").Value = adresse.Value 'adresse
        .Range("d14").Value = cp.Value      'code postal
        .Range("e14").Value = ville.Value   'ville

        For I = 1 To 20

            'on colle les produits ds leur ligne respective sur la facture
            .Range("B" & I + 18).Value = Me.Controls("prod" & I).Value

            'on colle les qttes
            .Range("F" & I + 18).Value = Me.Controls("qt" & I).Value

        Next I

    End With 'on ferme le with

    Unload Me ' on ferme le userform

End Sub

Je regarde demain et te dirai.

Hervé.

n'hesites pas a critiquer surtout

voila au moins 15 jours que je suis sur ce classeur et ce sont mes premiers pas en vba

doit y avoir de quoi dire lol

Bonjour,

Dans le module de la feuille "Facture"

Private Sub CommandButton2_Click()
...
'Corriger cette section comme suit :
' report des marchandises facturees
For I = 19 To 37
  Select Case Sheets("Facture").Cells(I, 2).Value
   Case Is = Sheets("Stocks").Range("D2").Value
     Sheets("Stocks").Cells(SLigne, 4) = 0 - Sheets("Facture").Cells(I, 6).Value
   Case Is = Sheets("Stocks").Range("E2").Value
     Sheets("Stocks").Cells(SLigne, 5) = 0 - Sheets("Facture").Cells(I, 6).Value
   Case Is = Sheets("Stocks").Range("F2").Value
     Sheets("Stocks").Cells(SLigne, 6) = 0 - Sheets("Facture").Cells(I, 6).Value
   Case Is = Sheets("Stocks").Range("G2").Value
     Sheets("Stocks").Cells(SLigne, 7) = 0 - Sheets("Facture").Cells(I, 6).Value
   Case Is = Sheets("Stocks").Range("H2").Value
     Sheets("Stocks").Cells(SLigne, 8) = 0 - Sheets("Facture").Cells(I, 6).Value
  End Select
Next
...

A+

impec ca marche

merci

j'attends le retour de theze avant de passer le post en resolu

Rechercher des sujets similaires à "usf ecrit pas bonne ligne"