VBA Excel - APIs et identificateur

  • Initiateur de la discussion Initiateur de la discussion batfrit
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
911
Réponses
12
Affichages
505
Réponses
4
Affichages
315
Réponses
1
Affichages
355
Retour