Au secour je craque !!!!

  • Initiateur de la discussion Creepy
  • Date de début
C

Creepy

Guest
Bonjour all,

Comme certains le savent je débute en prog Excel. Je voulais faire une base de données des clients de la société où je travaille pour me faciliter la tâche (nous navons pas Access!!) quand je recherche des informations sur des clients pour la prospection commerciale par exemple.

J'ai donc relevé les manches et je m'y suis mis !!

voila, j'y ai passé une 50aines d'heures et je suis proche du but. Le prog fonctionne à 80%

Mais aujourd'hui je me heurte à 2 gros problèmes que je ne peux pas résoudre :

1 - Mon bouton rechercher, je voudrais que dans ma userform il m'affiche le resultat de ma recherche + le marché et le N° de marché.

2 - J'ai de grave bug que je n'arrive pas à résoudre.

Je ne veux pas lacher l'affaire (fierté quand tu nous tiens !!).

Je ne veux pas non plus un fichier clef en main de votre part (ce n'est pas le but, je veux apprendre et comprendre).

Cependant je pense que là je n'ai pas toutes les competences pour débugger cette application et comme il est plus facile d'avoir le code source pour bien comprendre, je vous mets le code en PJ.

Que puis-je améliorer, comment tracer les erreurs et quelles sont les erreurs de débutant à eviter ??

Merci de votre aide, si besoin je peux vous mailer l'application complète mais elle est trop lourde pour etre en PJ

Creepy
 

Pièces jointes

  • kifekocode.zip
    3 KB · Affichages: 31
@

@Christophe@

Guest
Bonjour

Ben, je crois bien que tu vas trouver du monde près a t'aider, mais avec rien que le code source, cela risque d'être très long, si possible envoi ton fichier

OU une version simplifie, tu supprime toutes les données sensible et tu place sur le forum, si il fait plus de 50Ko, je suis sur que tu pourras l'envoyer dans la bal de plusieur chef de la VBA pour avoir de l'aide

@Christophe@
 
D

DJN90

Guest
Bonjour Creepy,

Comme tout le monde ici, je vais essayer de t'aider d'autant que j'ai fait aussi de la prospection par le passé.

Juste une suggestion, connais-tu le programme ACT! de Symantec. Programme génial que celui-là : suivi, exportation des résultats en excel et plein de chose...

Voilà un site où l'on en parle :
<http://www.epinions.com/Symantec_Corporation_ACT__3_0__PC__S0043267#>


Dan
 
@

@+Thierry

Guest
Hello @XTof@, DJ-Run, Creepy et le Forum...

Bon déjà tu vas te faire enguirlander pour le sujet de ce post....

Ensuite à la volée... en travaillant sur NotePad...

Remplacer Ceci :[.b]
Dim DerCell, Dercell1 As Integer

Remplacement :[.b]
Dim DerCell As String, Dercell1 As Integer (sinon =>>> DerCell sera Variant....)
(idem dans d'autres endroits ...)


===> DANGER
Si tu déclare Public au niveau Module Dercell et Dercell1......... Tu risque très gros ennuits de réutiliser le même nom de variable public pour les redéclarer dans la Macro "Private Sub Supprimer_Click...." et encore pire dans la macro où elles passent en tant que String !!! (Dim DerCell, Dercell1 As String)... C'est vraiment le Big Bordel déjà à ce niveau je vois...

Ensuite... juste être plus propre :

Remplacer Ceci :[.b]
Private Sub ClearModifdial()
ModMarche.Text = ""
ModClient.Text = ""
ModNMR.Text = ""
ModPeriode.Text = ""
ModUnite.Text = ""
ModCM.Text = ""
ModTelCM.Text = ""
ModCEC.Text = ""
ModTelCEC = ""
ModProd.Text = ""
ModTelProd.Text = ""
ModDU.Text = ""
ModTelDU.Text = ""
ModRem.Text = ""
End Sub

Remplacement Opition 1 :[.b]
Private Sub ClearModifdial()
Dim CTRL As Control
For Each CTRL In Controls
If TypeOf CTRL Is MSForms.TextBox Then
CTRL = ""
End If
Next CTRL

Remplacement Opition 2 :[.b]
(Si tu nettoies TOUTES les texbox... sinon utilise les TAG : )
Private Sub ClearModifdial()
Dim CTRL As Control
For Each CTRL In Controls
If CTRL.Tag = "Nettoyer" Then
CTRL = ""
End If
Next CTRL

La aussi :
Remplacer Ceci :[.b]

Feuil1.Clientbox.ListFillRange = "BdeD!A2:" & DerCell
Feuil1.MarcheBox.ListFillRange = "BdeD!B2:" & Dercell1

Feuil1.Clientbox.Value = ""
Feuil1.MarcheBox.Value = ""
Feuil1.Nmr.Caption = ""
Feuil1.Periode.Caption = ""
Feuil1.Unite.Caption = ""
Feuil1.CM.Caption = ""
Feuil1.TelCm.Caption = ""
Feuil1.CEC.Caption = ""
Feuil1.TelCEC.Caption = ""
Feuil1.Prod.Caption = ""
Feuil1.ProdTel.Caption = ""
Feuil1.DU.Caption = ""
Feuil1.TelDU.Caption = ""
Feuil1.Remarque.Caption = ""

Remplacement Opition 2 :[.b]

With Feuil1
.Clientbox.ListFillRange = "BdeD!A2:" & DerCell
.blah
.blah
.blah
End With

(Quoiqu'on peut aussi faire une boucle ptet sur tes ActiveX...)

La aussi ATTENTION vaut mieux nettoyer ta ListBox avant de la ré-remplir..

Remplacer Ceci :[.b]
LstResultat.Visible = True
LstResultat.ColumnCount = 3

Remplacement :[.b]
LstResultat.Visible = True
LstResultat.ColumnCount = 3
LstResultat.Clear


Là plus grave :

ERREUR DANS CETTE LIGNE !! DOUBLONS D'INSTRUCTIONS[.b]
Set C = .Find(Cherche, LookIn:=xlValues)
Set C = .Find(Cherche, LookIn:=xlValues)
(dans la condition "If btnNom.Value = True Then"...)


Pour la suite je ne peux pas compredre vu que tu répètes strictement trois fois la même recherche sur la Même Plage :
L = Sheets("BdeD").Range("A65536").End(xlUp).Row
Set Maplage = Sheets("BdeD").Range("A2:C" & L)

De plus à ce state un Select Case me semble plus approprié... Avec un set global de plage unique...

les "Dim Tab1() As String, Dim R As Integer, Dim Tab1() As String Dim Z As Byte, I As Byte, J As Byte...... servent à quoi ? (suffit pas de recopier mes démos !! lol)

Voilà grosso-modo ce que je peux voir en 5 minutes sur ton Txt.

Je te conseillerai de retourner sur les USF-Contact-Manager qui reste une belle démo avec en plus l'avis et l'assistance de Ti et Stéph...

Pour ce qui est du post de @Xtoph@, pas si sûr que que l'envoie en BAL soit apprécié (enfin pour ma part).

Moi le conseille que je donne à Creepy c'est de repartir plus petit... de comprendre par exemple que si Toto et Zaza sont des variables qui font :

Toto = Sheets("BdeD").Range("A65536").End(xlUp).Row

Zaza = Range("BdeD!A2").End(xlDown).Address

Toto est qui ? et Zaza ??? Boolean, Byte, Integer, String, Long, Double??

Ensuite si on Dim une variable en tête de module c'est pour que cette variable soit utilisable par les procédures de ce module.... Par pour refaire un Dim dans chacune...

Enfin voilà... Il y a encore du boulot Creepy...

Bon Aprèm
@+Thierry
 

Discussions similaires

Réponses
12
Affichages
568

Statistiques des forums

Discussions
314 653
Messages
2 111 592
Membres
111 208
dernier inscrit
estalavista