VBA Excel - APIs et identificateur

batfrit

XLDnaute Nouveau
Bonjour à tous,

cela fait maintenant 3 mois que je travaille sur un projet professionnel de gestion des numéros de dossier pour un bureau d'étude avec une programmation exclusivement en VBA (niveau moyen).

pour rendre l'interface plus agréable à l'utilisation, je rend l'application invisible à l'aide de application.visible=false
application.screenupdating = false

mais pour aller encore plus loin, j'ai ajouté les boutons réduire/aggrandir la USF

j'ai trouvé plusieurs code sur le Web pour réduire cette fenêtre dans la barre de tâche, mais aucune n'étant vraiment correcte.

je suis tombé sur un code qui semble fonctionner, mais il me demande de déclarer toutes mes variables, dont LBOUND et UBOUND, et c'est là que j'ai un soucis.

il me demande de déclarer les "identificateurs", kezako ?

merci d'avance pour ceux qui se pencherons sur mon problème.
si vous avez une autre solution pour réduire la USF dans la barre de tâche, je suis aussi preneur.

j'ai trouvé, il suffisait d'ajouter ceci au debut : Dim temp() As String

une solution apporte une autre question :

j'en appelle à M Boisgontier (s'il passe par ici), je m'inspire beaucoup de vos codes disponibles ici :Formation Excel VBA JB

je dois maintenant définir la variable "mondico" de ce code :
Set mondico = CreateObject("Scripting.Dictionary")

je continue a chercher de mon coté

merci d'avance

j'ai trouvé, encore une fois, j'ai ajouté ceci au debut du code :

Dim mondico as object

merci pour ceux qui auront lu ce post, et même s'il n'y a pas de réponse, j'espère que mes questionnements pourront un jour aider quelqu'un.
 
Dernière édition:

Hippolite

XLDnaute Accro
Re : VBA Excel - APIs et identificateur

Bonjour,
C'est un tableau de chaines de caractères.
A+

Edit : Pas rafraichi.
Bonjour Pierrot
Ta réponse est plus plus précise que la mienne !
Cordialement
 
Dernière édition:

batfrit

XLDnaute Nouveau
Re : VBA Excel - APIs et identificateur

Bonjour Pierrot, bonjour Hippolite,

merci de vos réponses, j'ai déclaré tout comme il suit :

Dim exclus As Variant
Dim temp() As String
Dim a As String
Dim B() As String
Dim k As Variant
Dim c As Variant
Dim l As Variant
Dim i As Integer
Dim j As Integer
Dim rep As String
Dim mondico As Object
Dim mondico2 As Object
Dim mondico3 As Object
Dim mondico4 As Object
Dim mondico5 As Object
Dim mondico6 As Object
Dim mondicox As Object

il n'y a plus de bogue, mais la recherche ne s'effectue plus comme avant. je ne peux pas vous transmettre de piece jointe, du fait que le fichier ne travaille qu'avec des fichiers en réseau.

le truc, c'est que tout fonctionnait bien comme cela, avant...

voici mon code (il est spartiate et très hétérogène, puisque je ne fais cela que depuis deux mois, et que j'apprend et recherche des bouts de code en même temps)

Private Sub champnom()
Dim exclus As Variant
Dim temp() As String
Dim a As String
Dim B() As String
Dim k As Variant
Dim c As Variant
Dim l As Variant
Dim i As Integer
Dim j As Integer
Dim rep As String
Dim mondico As Object
Dim mondico2 As Object
Dim mondico3 As Object
Dim mondico4 As Object
Dim mondico5 As Object
Dim mondico6 As Object
Dim mondico21 As Object
Dim mondico31 As Object
Dim mondico41 As Object
Dim mondico51 As Object
Dim mondico61 As Object
Dim mondicox As Object
Dim mondico23 As Object

exclus = Array("le", "à", "les", "des", "sur", "elle", "est", "ses")
a = Me.TextBox52.Value
Set mondico = CreateObject("Scripting.Dictionary")
Set mondico2 = CreateObject("Scripting.Dictionary")
Set mondico3 = CreateObject("Scripting.Dictionary")
Set mondico4 = CreateObject("Scripting.Dictionary")
Set mondico5 = CreateObject("Scripting.Dictionary")
Set mondico6 = CreateObject("Scripting.Dictionary")
Set mondicox = CreateObject("Scripting.Dictionary")

'
B = Split(Replace(a, ",", " "), " ")
For Each k In B
If Len(k) > 2 And Not IsNumeric(k) And IsError(Application.Match(k, exclus, 0)) Then
mondico.item(UCase(sansAccent(k))) = UCase(sansAccent(k))
End If
Next k
'
i = 0
j = 0
'
Me.ListBox1.Clear
'
Dim prg As Integer
If OptionButton1 = True Then
On Error Resume Next
For Each c In mondico.items
If j > 4 Then Exit For
'
If j = 4 Then
For Each l In mondico5
If UCase(sansAccent(l)) Like "*" & c & "*" Then
mondico6.item(UCase(l)) = UCase(l)
i = i + 1
End If
Next l
'
If i > 0 Then
temp = mondico6.items
j = j + 1
Else
Exit For
End If
End If
'
If j = 3 Then
For Each l In mondico4
If UCase(sansAccent(l)) Like "*" & c & "*" Then
mondico5.item(UCase(sansAccent(l))) = UCase(sansAccent(l))
i = i + 1
End If
Next l
'
If i > 0 Then
temp = mondico5.items
j = j + 1
Else
Exit For
End If
End If
'
If j = 2 Then
For Each l In mondico3
If UCase(sansAccent(l)) Like "*" & c & "*" Then
mondico4.item(UCase(sansAccent(l))) = UCase(sansAccent(l))
i = i + 1
End If
Next l
'
If i > 0 Then
temp = mondico4.items
j = j + 1
Else
Exit For
End If
End If
'
If j = 1 Then
For Each l In mondico2
If UCase(sansAccent(l)) Like "*" & c & "*" Then
mondico3.item(UCase(sansAccent(l))) = UCase(sansAccent(l))
i = i + 1
End If
Next l
'
If i > 0 Then
temp = mondico3.items
j = j + 1
Else
Exit For
End If
End If
'
If j = 0 Then
For Each l In Workbooks("bddnum.xls").Sheets("bdd").Range("B2:B" & Workbooks("bddnum.xls").Sheets("bdd").[A65000].End(xlUp).Row)
If UCase(sansAccent(l)) Like "*" & c & "*" Then
mondico2.item(Replace(l.Offset(, -1), " ", "") & " " & UCase(sansAccent(l))) = Replace(l.Offset(, -1).Value, " ", "") & " " & UCase(sansAccent(l))
i = i + 1
End If
Next l
'
If i > 0 Then
temp = mondico2.items
j = j + 1
Else
Exit For
End If
End If
'
Next c
'
Me.ListBox1.List = temp
'
prg = 0
'
If Me.ListBox1.ListCount = 0 Then
rep = MsgBox("Voulez vous relancer la recherche en ignorant certains mots ?", vbYesNo + vbQuestion, "Aucun résultat")
If rep = vbYes Then
i = 1
For Each l In Workbooks("bddnum.xls").Sheets("bdd").Range(Workbooks("bddnum.xls").Sheets("bdd").[A65000]).End(xlUp).Row
For Each c In mondico.items
If UCase(sansAccent(l)) Like "*" & c & "*" Then
Me.ListBox1.AddItem (Replace(l.Offset(, -1), " ", "") & " " & UCase(sansAccent(l)))
i = i + 1
End If
Next
'
Next
'
End If
End If
End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : VBA Excel - APIs et identificateur

Bonjour Pierrot93,
Un grand merci pour cette information, j'ai appris quelque chose.
J'étais persuadé que le résultat d'un Split ne pouvait aller que dans un Variant comme celui d'un Array.
Il est vrai que contrairement à ce dernier, il ne peut contenir que des String.
Cordialement.
 

Pierrot93

XLDnaute Barbatruc
Re : VBA Excel - APIs et identificateur

Re,

je vois que dans ton code tu as placé ceci :
On Error Resume Next
cette ligne a pour effect de ne pas se préocupper des erreurs et de passer à l'instruction suivant, pas top de procéder ainsi, car par la suite tu ne peux pas savoir où ton code accroche.... et si il y a erreur ou pas... Enlève cette ligne et exécute ton code pas à pas (utilisation de la touche de fonction F8 dans l'éditeur vba).... l
 

Discussions similaires

Réponses
12
Affichages
251

Statistiques des forums

Discussions
312 239
Messages
2 086 508
Membres
103 237
dernier inscrit
smbt-excel