Modifier la bdd par un bouton

bonjour a tous

je fais encore appel a vous , j'ai mis mon fichier en pièce jointe (c'est du piquage de code modelé a ma sauce )je débute

alors sur l'onglé rééditer facture il y a un bouton rééditer facture qui ouvre un usiforme pour trouver la facture afficher la tout vas bien

quand la facture est affichée et que je modifies les articles je clic sur le bouton enregistrer facture

je voudrais qui écrase l'ancienne facture la ca bloque j'ai fais pleins de test rien affaire trop nul

a oui ca c'est moins urgent dans usiforme la combobox1 ne prend pas les clients que je rajoute dans base clients

merci d'avance pour votre aide

largo41

22proget-fact.zip (336.42 Ko)

Bonjour,

alors sur l'onglé rééditer facture il y a un bouton rééditer facture qui ouvre un usiforme pour trouver la facture afficher la tout vas bien

Tout ne va pas bien > ce n'est jamais la facture choisie qui s'affiche ...

Feuille "rééditer_facture" > le bouton "Rééditer une Facture" n'a pas d'effet > c'est toujours la 1re facture qui est affichée ...

En modifiant lors du choix de la facture > la formule de la cellule "D22" > la facture choisie s'affiche correctement ...

Private Sub CommandButton1_Click()
  Sheets("rééditer_facture").[v2:w1000].Clear
  Sheets("rééditer_facture").[v2].Resize(Me.ListBox1.ListCount, 2) = Me.ListBox1.List
  Sheets("rééditer_facture").Cells(22, "D").FormulaLocal = "=W" & Me.ListBox1.ListIndex + 2   ' <<< ajout - ric
  Unload Me
End Sub

ric

Bonjour,

Pour mieux répondre à ta demande ...

Quand tu crées une nouvelle facture > chacune des cellules de la feuille "FACTURE" est écrite dans la feuille "Base facturation" ...

Pour éditer une facture > tu dois faire l'inverse > chacune des cellules (colonne C, H, K et L) de la facture choisie doit être lue dans la feuille "Base facturation" > puis réécrite dans la feuille "rééditer_facture" ou "Facture" c'est au choix ...

Ici, je présume que la section "Référence" la colonne "C" de la feuille "rééditer_facture" est une liste de choix comme dans sur la feuille "Facture" ...

Puis quand les modifications sont terminées > l'on écrase les données de la facture sur la ligne qui a été lue de la feuille "Base facturation" > même code que pour enregistrer une nouvelle facture > sauf la ligne qui doit être celle de la facture choisie ...

ric

bonjour ric

merci pour ta reponce

je me suis mal exprimé

1 er chose pour rééditer une facture tout ce passe sur la feuille rééditer facture et il y a rien a toucher sur la facture en elle même le bouton rééditer fonctionne ca ouvre un userforme ou il y a 2 menu déroulant pour sélectionner la facture que l'on veut voir apparaitre sur la feuille réédité facture on clic sur valider

une fois la facture visible sur l'onglé rééditer facture on modifie les articles de celle ci et l'on clic sur le bouton enregistrer facture et c'est la qu'elle doit écraser l'ancienne facture dans l'onglé base facturation

merci pour ton aide

Bonjour,

Le fichier que tu as fourni ...

Feuille "rééditer_facture" > bouton "Rééditer une Facture" > le formulaire "userform" s'affiche > est-ce que tu as remarqué que quelque soit le choix fait dans la "ListBox" > c'est toujours la 1re facture qui est affichée dans la feuille ?

... une fois la facture visible sur l'onglé rééditer facture on modifie les articles de celle ci ...

Cette facture affichée ne contient que des formules > comment doit-on modifier un item ? > est-ce que l'on change la formule ?

Merci de m'expliquer la démarche à suivre ...

ric

je ne comprend pas chez moi tout fonctionne au niveau du bouton réédition quand je change dans userforme et que je selection une autre facture que celle visible et

que je valide tout change (n° facture ,code client, article , nom du client ext.....

je remets le fichier joint

5proget-fact.zip (336.42 Ko)

Bonjour,

Je viens de comprendre la chose > il faut sélectionner via les ComboBox afin qu'il ne reste qu'un item dans la ListBox ou que l'item désiré soit le premier de la ListBox > là > le changement s'opère ...

D'acc ....

Rendu là > comment est-ce que tu modifies l'information dans la feuille puisque que ce ne sont que des formules ?

Est-ce que tu modifies les formules ? Est-ce que tu écrases les formules ?

ric

merci ric de prendre du temps pour moi

effectivement actuellement je ne peut pas modifier les articles "flute encore un problème a régler sinon les formules disparaisses

fluttttttttttttttt

merci a toi

Bonjour,

Pour répondre à la demande d'origine ...

Un essai ...

Sub Modifier_reedition()
Dim X As Integer
Dim no_ligne As Integer
'La fonction permet de modifier une commande déjà créer

Application.ScreenUpdating = False

   For X = 2 To Sheets("Base facturation").Cells(Rows.Count, "A").End(xlUp).Row
      If Sheets("Base facturation").Cells(X, "A") = Worksheets("rééditer_facture").Range("d22").Value Then
         no_ligne = X
         Exit For
      End If
   Next X

' Permet de modifier les données de la feuille Base facturation
    If no_ligne > 0 Then
    'Remplir la ligne vide a l'aide de l'user form
        Sheets("Base facturation").Cells(no_ligne, 1) = Sheets("rééditer_facture").Range("d22").Value
        'Sheets("Base facturation").Cells(no_ligne, 2) = Sheets("rééditer_facture").Range("e25")
        Sheets("Base facturation").Cells(no_ligne, 3) = Sheets("rééditer_facture").Range("k16").Value
        Sheets("Base facturation").Cells(no_ligne, 4) = Sheets("rééditer_facture").Range("k17").Value
        Sheets("Base facturation").Cells(no_ligne, 5) = Sheets("rééditer_facture").Range("k18").Value
        Sheets("Base facturation").Cells(no_ligne, 6) = Sheets("rééditer_facture").Range("k19").Value
        Sheets("Base facturation").Cells(no_ligne, 7) = Sheets("rééditer_facture").Range("l19").Value
        Sheets("Base facturation").Cells(no_ligne, 8) = Sheets("rééditer_facture").Range("k20").Value
' ...
' ...
' ...
' ...
' ...  

Je regarde pour remplacer tes formules par des données plus concrètes ...

ric

super cool ca marche

merci beaucoup

il me reste a trouver la solution décrassement des formules

mille merci

Bonjour,

Je te laisser tester à fond > méfie-toi > il pourrait rester des coquilles > des lectures ou écritures de mauvaises cellules ...

ric

ouah..... je viens de rentrer tu as bossé comme un chef

pas de gros problème tout fonctionne c'est top merci merci merci

j'ai truck qui me trotte dans la tête de puis quelque heures

peut tu me dire si a ton avis pour l'écrasement des formules si je creer un clone cacher de la feuille "rééditer facture" avec les formules propre nommé " rééditer facture bis "et de faire une formule ou un code disant qu'apres avoir editer la facture dans la feuille "rééditer facture principale" il remplace les cellules vide par les formules qui ce trouve dans la feuille " rééditer facture bis"

est ce que c'est une bonne piste ou pas?

encore mille merci pour ton aide tes un chef

largo41

Bonjour,

Est-ce que tu veux en venir à faire un mixe de "Facture" et "rééditer_facture" ?

Si c'est le cas > je suggère de créer des listes de choix dans "rééditer_facture" en colonne C > pareil à ce qu'il y a en colonne C de la feuille "Facture" ...

Dans le code du formulaire "userform" > mettre en commentaire ou supprimer les lignes qui écrivent dans les colonnes D J et L de la feuille "rééditer_facture" et conserver les formules de ces colonnes D J et L ...

Ce qui permettrait de changer ou ajouter des "Référence" par la "Liste de choix > "Description" "PU HT" et "Montant HT" sont liées à "Référence" > les formules de D J et L sont utiles ...

Cela implique de n'effacer que les plages "K16:K20" > H et K de 30 à 54 ...

Pour les plages à effacer > utilise "ClearContents" > exemple : Range("H30:H54").ClearContents > ClearContents ne supprime pas les formats ni les listes de validation > seulement la donnée ...

Lors de l'écriture des données dans "rééditer_facture" > en plus des lignes 16 à 20 de la colonne K > n'écrire que dans les colonnes C H K des lignes 30 à 54 > là encore > il n'y a qu'à mettre en commentaire ou supprimer les lignes de codes dans "userform" ...

Amuse-toi bien ...

Si vraiment tu colles > passe prendre un peu de solvant ...

ric

merci pour ta raiponce

c'est juste que a la base la feuille réédite facture en c30:c54 il y avait menu deroulant pour les articles et quand on réédite la facture ca efface les menus déroulant donc on ne peut pas modifier la facture

voila

bonne soirée et encore merci

Bonjour,

Un peu d'amélioration du code du bouton "Valide" du "userform" ...

Conserve les formules en colonne D J et L et les "liste de choix" en colonne C ...

ric

Fichier modifié > il manquait le fermeture d'un With :

salut ric

trop top tous les problèmes sont résolus y a plus cas...........

j'ai rajouté sur le bouton enregistrer la facture enregistrement en pdf ca fonction ouai

je voudrais juste que ca vérifies et signale que l'on vas écraser le fichier PDF et que l'on n'est le choix de l'écraser ou de modifier le nom

si tu as un code la dessus ca serai top

encore merci de ton temps et de ta patience avec un bleu comme moi

bon dimanche

largo41

Bonjour,

Vérifier si un fichier existe dans le chemin spécifié ...

Voici un exemple à adapter à ton code ...

C'est le nom du fichier que l'on teste > donc peu importe le type de fichier à tester ...

Sub TesteSiFichierExiste()
'par Excel-Malin.com ( https://excel-malin.com )

Dim MonFichier As String

MonFichier = "C:\Dossier_test\fichier_test.docx"

    If FichierExiste(MonFichier) = True Then
        MsgBox "Le fichier existe..."
    Else
        MsgBox "Le fichier n'existe pas..."
    End If

End Sub
Public Function FichierExiste(MonFichier as String)
'par Excel-Malin.com ( https://excel-malin.com )

   If MonFichier <> "" And Len(Dir(MonFichier)) > 0 Then
      FichierExiste = True
   Else
      FichierExiste = False
   End If
End Function

ric

cool

merci pour tout on travail

a+

largo41

ric

Rechercher des sujets similaires à "modifier bdd bouton"