Debutant - Probleme Microsofts CommonDialog manquant

star42 Messages postés 2 Date d'inscription mercredi 22 octobre 2008 Statut Membre Dernière intervention 5 juin 2009 - 5 juin 2009 à 09:21
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 - 5 juin 2009 à 12:03
bonjour..
j'ai un ami qui m'avais bidouiller de quoi faire une facture, devis avec article, client sous excel. et c'était en 2000.
et j'essaye de réutiliser ce programme avec XP et office 2003.. j'ai apparemment un problème de compatibilité de version VB... j'ai une erreur qui se produit "projet ou blibliotheque manquant" et quand je verifie il manque Microsoft CommonDialog.

Le probleme c'est que je ne connai rien sur VB.. si vous pouviez m'aider ?
d'avance merci

1ere partie de la source ou il s'arrete avec l'erreur

Private Sub bt_new_fact_Click()
   
    'Bouton ajouter une facture
   
    Dim last_num_fact As Long, new_num_fact As Long
    Dim nom_fact$, chemin$, nom_compl$
   
    'ouvrir le modele
    Workbooks.Open Filename:="C:\facturationpro\facture.xls", ReadOnly:=True
   
    'lire n° de derniere facture
    last_num_fact = Workbooks("csp.xls").Worksheets("depart").Range("I2")
    new_num_fact = last_num_fact + 1
    'nouveau numfact dans modele de facture
    Workbooks("facture.xls").Worksheets("modele").Range("G4") = last_num_fact
    'date dans modele de facture
    Workbooks("facture.xls").Worksheets("modele").Range("D4") = Date$
   
    'n° pour prochaine facture
    Workbooks("csp.xls").Worksheets("depart").Range("I2") = new_num_fact
   
    'enregistrer sous un nouveau nom
    chemin$ = "C:\facturationpro\factures"
    nom_fact$ = Trim$(Str$(last_num_fact)) + ".xls"
    Workbooks("facture.xls").SaveAs Filename:=chemin$ + nom_fact$   'sauver sous

End Sub

3 réponses

cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
5 juin 2009 à 10:10
Bonjour

Il n'y a pas d'appel à CommonDialog dans cette partie, dans VBE (Outils/Macro / VIsual Basic Editor) ajoute lka référence (Outils/Référence) 
Essaye de créer l'arborescence c:\facturation\pro\facture
et le fichier c:\facturationpro\facture.xls avec une feuille qui porte le nom "modele"
0
star42 Messages postés 2 Date d'inscription mercredi 22 octobre 2008 Statut Membre Dernière intervention 5 juin 2009
5 juin 2009 à 10:35
Voici la source complète du fichier ou cela plante... mais il y d'autres lien...

Private Sub bt_bc2fact_Click()

    'convertir un devis en facture
    Dim rep
   
    rep = Application.Dialogs(xlDialogOpen).Show("c:\facturationpro\devis")
   
    If rep = False Then 'si annuler
        Exit Sub
    Else
   
        Dim bcname$
        bcname$ = ActiveWorkbook.Name   'nom du devis ouvert
       
        'confirmer la conversion
        rep = MsgBox("Convertir le devis en facture ?", vbOKCancel, "Conversion")
       
        If rep = vbCancel Then  'annuler la conversion
            'fermer le devis
            Workbooks(bcname$).Close (True)
            Exit Sub
        Else
            'effectuer la conversion
           
            'créer nouvelle facture
            Dim facname$, ncli$, codeart$, qtart As Long, remise As Double, libele$
            Dim dt_ar, cd_ar$, mont_ar As Double, li As Long, numchq$
           
           
            Call bt_new_fact_Click
            facname$ = ActiveWorkbook.Name   'nom de la nouvelle facture
           
            'copier les données du devis vers facture (Num client, données arrhes)
            ncli$ = Workbooks(bcname$).Worksheets("modele").Range("J4").Value
            dt_ar = Workbooks(bcname$).Worksheets("modele").Range("E63").Value
            cd_ar$ = Workbooks(bcname$).Worksheets("modele").Range("G63").Value
            mont_ar = Workbooks(bcname$).Worksheets("modele").Range("K63").Value
            numchq$ = Workbooks(bcname$).Worksheets("modele").Range("I63").Value
           
            Workbooks(facname$).Worksheets("modele").Range("J4").Value = ncli$
            Workbooks(facname$).Worksheets("modele").Range("E63").Value = dt_ar
            Workbooks(facname$).Worksheets("modele").Range("G63").Value = cd_ar$
            Workbooks(facname$).Worksheets("modele").Range("K63").Value = mont_ar
            Workbooks(facname$).Worksheets("modele").Range("I63").Value = numchq$
           
            For li = 19 To 48
           
                'scanner les lignes du devis, et transférer dans facture
                codeart$ = Workbooks(bcname$).Worksheets("modele").Cells(li, 2).Value
                If Val(codeart$) = 0 Then   'pas de ref
                    libele$ = Workbooks(bcname$).Worksheets("modele").Cells(li, 3).Value
                    If libele$ <> "" Then 'lignes sans ref
                        Workbooks(facname$).Worksheets("modele").Cells(li, 3) = libele$
                        GoTo st
                    Else
                        GoTo st
                    End If
                End If
                   
                qtart = Workbooks(bcname$).Worksheets("modele").Cells(li, 7).Value
                remise = Workbooks(bcname$).Worksheets("modele").Cells(li, 9).Value
               
                Workbooks(facname$).Worksheets("modele").Cells(li, 2) = codeart$
                Workbooks(facname$).Worksheets("modele").Cells(li, 7) = qtart
                If Val(remise) <> 0 Then
                    Workbooks(facname$).Worksheets("modele").Cells(li, 9) = remise
                End If
st:
            Next li
           
            'fermer et sauver le devis
            Workbooks(bcname$).Close (True)
        End If
    End If
   
End Sub

Private Sub bt_new_fact_Click()
   
    'Bouton ajouter une facture
   
    Dim last_num_fact As Long, new_num_fact As Long
    Dim nom_fact$, chemin$, nom_compl$
   
    'ouvrir le modele
    Workbooks.Open Filename:="C:\facturationpro\facture.xls", ReadOnly:=True
   
    'lire n° de derniere facture
    last_num_fact = Workbooks("csp.xls").Worksheets("depart").Range("I2")
    new_num_fact = last_num_fact + 1
    'nouveau numfact dans modele de facture
    Workbooks("facture.xls").Worksheets("modele").Range("G4") = last_num_fact
    'date dans modele de facture
    Workbooks("facture.xls").Worksheets("modele").Range("D4") = Date$
   
    'n° pour prochaine facture
    Workbooks("csp.xls").Worksheets("depart").Range("I2") = new_num_fact
   
    'enregistrer sous un nouveau nom
    chemin$ = "C:\facturationpro\factures"
    nom_fact$ = Trim$(Str$(last_num_fact)) + ".xls"
    Workbooks("facture.xls").SaveAs Filename:=chemin$ + nom_fact$   'sauver sous

End Sub

Private Sub BT_newavoir_Click()
    'Bouton ajouter un devis
   
    Dim last_num_av As Long, new_num_av As Long
    Dim nom_av$, chemin$, nom_compl$
   
    'ouvrir le modele
    Workbooks.Open Filename:="C:\facturationpro\avoir.xls", ReadOnly:=True
   
    'lire n° de dernier avoir
    last_num_av = Workbooks("csp.xls").Worksheets("depart").Range("I4")
    new_num_av = last_num_av + 1
    'nouveau numav dans modele d'avoir
    Workbooks("avoir.xls").Worksheets("modele").Range("G4") = last_num_av
    'date dans modele d'avoir
    Workbooks("avoir.xls").Worksheets("modele").Range("D4") = Date$
   
    'n° pour prochain avoir
    Workbooks("csp.xls").Worksheets("depart").Range("I4") = new_num_av
   
    'enregistrer sous un nouveau nom
    chemin$ = "C:\facturationpro\avoirs"
    nom_av$ = "avoir_" + Trim$(Str$(last_num_av)) + ".xls"
    Workbooks("avoir.xls").SaveAs Filename:=chemin$ + nom_av$   'sauver sous

End Sub

Private Sub BT_newbc_Click()
   
    'Bouton ajouter un devis
   
    Dim last_num_bc As Long, new_num_bc As Long
    Dim nom_bc$, chemin$, nom_compl$
   
    'ouvrir le modele
    Workbooks.Open Filename:="C:\facturationpro\devis.xls", ReadOnly:=True
   
    'lire n° de dernier devis
    last_num_bc = Workbooks("csp.xls").Worksheets("depart").Range("I3")
    new_num_bc = last_num_bc + 1
    'nouveau numbc dans modele de devis
    Workbooks("devis.xls").Worksheets("modele").Range("G4") = last_num_bc
    'date dans modele de devis
    Workbooks("devis.xls").Worksheets("modele").Range("D4") = Date$
   
    'n° pour prochain devis
    Workbooks("csp.xls").Worksheets("depart").Range("I3") = new_num_bc
   
    'enregistrer sous un nouveau nom
    chemin$ = "C:\facturationpro\devis"
    nom_bc$ = "devis " + Trim$(Str$(last_num_bc)) + ".xls"
    Workbooks("devis.xls").SaveAs Filename:=chemin$ + nom_bc$   'sauver sous

End Sub

Private Sub BT_open_fact_exist_Click()

        'trier recap en ordre décroissant
   
    Workbooks("csp.xls").Worksheets("recap").Range("A2:F5002").Sort _
    Key1:=Worksheets("recap").Range("A2"), _
    order1:=xlDescending

    Workbooks("csp.xls").Worksheets("recap").Activate
   
End Sub

Private Sub bt_options_Click()
    'afficher feuille choix des options
    UserForm3.Show
   
End Sub

Private Sub bt_ouvre_avoir_Click()

    'filerequester ouvrir avoirs
    Application.Dialogs(xlDialogOpen).Show ("c:\facturationpro\avoirs")

End Sub

Private Sub bt_ouvre_bc_Click()
    'filerequester ouvrir devis
    Application.Dialogs(xlDialogOpen).Show ("c:\facturationpro\devis")

End Sub
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
5 juin 2009 à 12:03
Le code me semblant assez irréprochable au premier abort.
Je vais te demander d'acquérir de l'expérience dans les tests unitaires et résoudre tes problèmes seuls.
Voilà quelques pistes :
Quand une macro plante, on peut savoir sur quelle ligne en validant le mode déboguage ou si cela boucle en arrêtant le traitement par la combinaison de touche Ctrl +Arret défilement puis poursuite du traitement en pas à pas par actions successives sur la touche F8 et en mettant des points d'arrêts dans le code (déboguage / ajouter un espion)
0
Rejoignez-nous