VBA et excel [projet gestion de dossier de société] [Résolu]

Signaler
Messages postés
6
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 octobre 2008
-
Messages postés
6
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 octobre 2008
-
Bonsoir a tous, je suis tout nouveau sur le forum.
Présentation rapide : je bidouille en info, je code un peu (surtout php/mysql) mais je suis loin d'etre un bon développeur...

J'ai un projet en tête pour mon boulot et je souhaite savoir si d'une part le projet est réalisable rapidement etant donné que je débute en VBA et d'autre part si la solution retenue est valable.

Je m'explique :

On gère dans ma boite ce que l'on appelle "des dossiers de société". Dans chaque dossier, il existe plusieurs informations : raison sociale, adresse, telephone, représentants legaux...
Je souhaiterais "informatiser" cette gestion. Le hic, je dispose seulement d'excel (+vba) pour réaliser ce projet. Il faudrait faire une demande pour l'installation d'access (ça serait long)...

Le projet :
une feuille excel avec plusieurs colonnes : raisons sociale, adresse, nature juridique...
une deuxieme qui me sert pour alimenter mes combobox...
une troisieme appelé AIDE pour expliquer le fonctionnement
une quatrième servant de page de garde et "d'acces au programme" c'est a dire au lancement du formulaire réalisé en vba (userform) qui me permettrait d'ajouter la société et ses données, de les modifier et de les imprimer sur une page blanche mise en forme.
J'ajoute que les informations sont régulièrement mise a jour.

Puis-je me servir d'excel comme d'une BDD ?

Ce projet est-il rapidement réalisable par un débutant ?

Merci pour vos réponses

7 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

oui sans probleme mais je te conseil de separer la partie bd du reste c'est a dire avoir un fichier excel specifique pour eviter la corruption de celui-ci.
Messages postés
6
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 octobre 2008

Bonjour,

Je continue le topic pour vous faire par de l'avancement du projet.
Jusqu'a présent, j'ai réussi tant bien que mal a me débrouiller.
J'essai de mettre en place un "moteur de recherche" du non du client, je souhaite trouver la cellule qui contient le nom et afficher dans un userform les données récuperees. Jusque la ça marche. Par contre quand le nom du client ne figure pas dans la colonne je veux un message "Le client n'existe pas!" mais je n'arrive pas à mettre en place le msgbox. Voici le code :

Private Sub rechercher_Click()

Dim var As String
Dim ligne As Integer
var = UCase(UserForm2.recherche.Value)

If var = "" Then
msgbox "Veuillez indiquer Le nom du client !", vbInformation, "Attention"
End If

If var <> "" Then

Sheets("societes").Select
Cells.Find(What:=var, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate


'Activer la cellule la plus à gauche
ligne = ActiveCell.Row
Cells(ligne, 1).Select

'Inscrire les résultats de la recherche dans les champs correspondants
UserForm2.modification.Value = ActiveCell.Offset(0, 1).Text
UserForm2.cloture.Value = ActiveCell.Offset(0, 2).Text
UserForm2.naturejuridique.Value = ActiveCell.Offset(0, 3).Text
UserForm2.raisonsociale.Value = ActiveCell.Offset(0, 4).Text
UserForm2.anciennement.Value = ActiveCell.Offset(0, 5).Text
UserForm2.numero.Value = ActiveCell.Offset(0, 6).Text
UserForm2.voie.Value = ActiveCell.Offset(0, 7).Text
UserForm2.adresse.Value = ActiveCell.Offset(0, 8).Text
UserForm2.BP.Value = ActiveCell.Offset(0, 10).Text
UserForm2.CP.Value = ActiveCell.Offset(0, 11).Text
UserForm2.ville.Value = ActiveCell.Offset(0, 12).Text
UserForm2.telephone.Value = ActiveCell.Offset(0, 13).Text
UserForm2.siret.Value = ActiveCell.Offset(0, 14).Text
UserForm2.representants.Value = ActiveCell.Offset(0, 17).Text
UserForm2.qualite.Value = ActiveCell.Offset(0, 18).Text
UserForm2.pouvoirs.Value = ActiveCell.Offset(0, 19).Text
UserForm2.infos.Value = ActiveCell.Offset(0, 20).Text

End If
End Sub

Avec ce code, si le client n'existe pas j'ai un message d'erreur : variable objet ou variable de bloc with non definie

Merci pour votre aide
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

essais ça :

Private Sub rechercher_Click()

Dim var As String

Dim ligne As Integer

var = UCase(UserForm2.recherche.Value)

    If var = "" Then

        msgbox "Veuillez indiquer Le nom du client !", vbInformation, "Attention"

    End If

    

    If var <> "" Then

        Sheets("societes").Select

        On Error Resume Next 'si erreur a la ligne suivante on continu quand meme
        Cells.Find(What:=var, After:=ActiveCell, LookIn:=xlFormulas, LookAt _

        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

        False, SearchFormat:=False).Activate


        If Err = 0 then 'si pas d'erreur
            'Activer la cellule la plus à gauche

            ligne = ActiveCell.Row

            Cells(ligne, 1).Select

  

           'Inscrire les résultats de la recherche dans les champs correspondants

            UserForm2.modification.Value = ActiveCell.Offset(0, 1).Text

            UserForm2.cloture.Value = ActiveCell.Offset(0, 2).Text

            UserForm2.naturejuridique.Value = ActiveCell.Offset(0, 3).Text

            UserForm2.raisonsociale.Value = ActiveCell.Offset(0, 4).Text

            UserForm2.anciennement.Value = ActiveCell.Offset(0, 5).Text

            UserForm2.numero.Value = ActiveCell.Offset(0, 6).Text

            UserForm2.voie.Value = ActiveCell.Offset(0, 7).Text

            UserForm2.adresse.Value = ActiveCell.Offset(0, 8).Text

            UserForm2.BP.Value = ActiveCell.Offset(0, 10).Text

            UserForm2.CP.Value = ActiveCell.Offset(0, 11).Text

            UserForm2.ville.Value = ActiveCell.Offset(0, 12).Text

            UserForm2.telephone.Value = ActiveCell.Offset(0, 13).Text

            UserForm2.siret.Value = ActiveCell.Offset(0, 14).Text

            UserForm2.representants.Value = ActiveCell.Offset(0, 17).Text

            UserForm2.qualite.Value = ActiveCell.Offset(0, 18).Text

            UserForm2.pouvoirs.Value = ActiveCell.Offset(0, 19).Text

            UserForm2.infos.Value = ActiveCell.Offset(0, 20).Text

        Else 'si erreur il y a
           Msgbox "Le client n'existe pas!", VbEclamation, "Erreur Client..."
           Err.Clear
    
   End If
    End If

End Sub

A+
Messages postés
6
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 octobre 2008

Super ça marche parfaitement

Merci encore

@ bientot
Messages postés
6
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 octobre 2008

Bonsoir Bigfish :) je sollicite une nouvelle fois tes compétences.

En testant la fonction recherche au boulot (excel 2000), j'ai une erreur d'execution 91 objet non défini qui me renvoie ici  :
Cells.Find(What:= var, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False ).Activate

En supprimant l'argument en gras, l'erreur disparait ! Mais je trouve ça trop simple de supprimer un argument, ça facilite trop l'affaire Je souhaite avoir un code le plus "propre" possible.
Que se passe t il quand searchformat n'est pas défini ou a False.
Donc j'ai mis en place ce code sous excel 2003 qui marche aussi. Fonctionnera t il sous excel 2000 ? Je ne pourrais tester que lundi :

Private Sub rechercher_Click()

Dim var As String
Dim ligne As Integer
var = UCase(UserForm2.recherche.Value)

    If var = "" Then
        msgbox "Veuillez indiquer Le nom du client !", vbInformation, "Attention"
    End If
   
   
    If var <> "" Then
            With Worksheets("societes")
            .Activate
            Dim search As Range
            Set search = Cells.Find(What:=var, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False)
                       
            If Not search Is Nothing Then
            search.Activate
            Sheets("societes").Select
            'Activer la cellule la plus à gauche
            ligne = ActiveCell.Row
            Cells(ligne, 1).Select
 
            'Inscrire les résultats de la recherche dans les champs correspondants
            UserForm2.modification.Value = ActiveCell.Offset(0, 1).Text
            UserForm2.cloture.Value = ActiveCell.Offset(0, 2).Text
            UserForm2.naturejuridique.Value = ActiveCell.Offset(0, 3).Text
            UserForm2.raisonsociale.Value = ActiveCell.Offset(0, 4).Text
            UserForm2.anciennement.Value = ActiveCell.Offset(0, 5).Text
            UserForm2.numero.Value = ActiveCell.Offset(0, 6).Text
            UserForm2.voie.Value = ActiveCell.Offset(0, 7).Text
            UserForm2.adresse.Value = ActiveCell.Offset(0, 8).Text
            UserForm2.BP.Value = ActiveCell.Offset(0, 10).Text
            UserForm2.CP.Value = ActiveCell.Offset(0, 11).Text
            UserForm2.ville.Value = ActiveCell.Offset(0, 12).Text
            UserForm2.telephone.Value = ActiveCell.Offset(0, 13).Text
            UserForm2.siret.Value = ActiveCell.Offset(0, 14).Text
            UserForm2.representants.Value = ActiveCell.Offset(0, 17).Text
            UserForm2.qualite.Value = ActiveCell.Offset(0, 18).Text
            UserForm2.pouvoirs.Value = ActiveCell.Offset(0, 19).Text
            UserForm2.infos.Value = ActiveCell.Offset(0, 20).Text
            Else
            msgbox "Le client n'existe pas !", vbExclamation, "Erreur Client..."
            End If
            End With
    End If
End Sub

Merci pour tes explications
Messages postés
6
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 octobre 2008

Je pense avoir trouvé la soluce : je n'ai pas testé le second code sous 2000 mais apparement l'argument "SearchFormat" est inconnu de la version 2000 ce qui provoque l'erreur.... Le code précédent ne devrait donc pas fonctionner... Je testerai malgré tout  
Messages postés
6
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
10 octobre 2008

Je pense avoir trouvé la soluce : je n'ai pas testé le second code sous 2000 mais apparement l'argument "SearchFormat" est inconnu de la version 2000 ce qui provoque l'erreur.... Le code précédent ne devrait donc pas fonctionner... Je testerai malgré tout