Bonjour,
Je viens vers vous car j'ai un soucis sur ma macro et que je n'arrive pas à le résoudre. Qu'on s'entende bien, j'ai déjà cherché de mon côté et j'ai tourné le truc dans tout les sens sauf que j'en arrive à la conclusion que je loupe un truc évident et je ne vois pas quoi. Après, je connais un bon paquet de langage, donc il est possible que je me sois mélangé les pinceaux.
Tout d'abord, deux screenshots pour contextualiser :
Mon userform ===> http://image.noelshack.com/fichiers/...1-userform.jpg
Puis mon tableau sur lequel je me base ===> http://image.noelshack.com/fichiers/...77-tableau.jpg
Voici mon code, que je vous explique de suite après :
Le principe de ce code est le suivant : Sur mon tableau que vous avez en lien au dessus, je souhaiterais "ajouter" une balise et sa valeur associée à une distance donnée. Le principe étant que je peux en ajouter plusieurs balises (ici 4 car 4 lignes). Dans le userform, la ComboBox1 me sert à mettre le nom de la balise (exemple AS1) la ComboBox2 me sert à mettre ma distance (exemple "1km") et la TextBox1 à rentrer la valeur désirée, du genre 15 admettons. Ensuite j'appuie sur "Valider" et le code ci-dessus s’exécute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Private Sub CommandButton1_Click() Sheets("Calculs").Select If ComboBox1.Value = " " Then MsgBox "Veuillez sélectionner le nom de la balise" ElseIf ComboBox2.Value = " " Then MsgBox "Veuillez sélectionner la distance de la balise" ElseIf TextBox1.Value = "" Then MsgBox "Veuillez saisir la valeur de la balise" End If For Var = 3 To ValeurMax 'MsgBox "Fraise" If ComboBox2.Value = "1km" And Cells(Var, 49).Value = "" Then 'MsgBox Var Dog = Var 'MsgBox Dog Var= ValeurMax 'MsgBox Var End If Next MsgBox Var MsgBox Dog MsgBox ValeurMax Cells(Dog, 49).Value = ComboBox1.Value Cells(Dog, 50).Value = TextBox1.Value Application.ScreenUpdating = False End Sub Et aussi mon Userform_Initialize Private Sub UserForm_Initialize() Application.ScreenUpdating = True ComboBox1.ColumnCount = 1 ComboBox1.List() = Array(" ", "AC1", "AC2", "AC3", "AC4") ComboBox1.Value = " " ComboBox2.ColumnCount = 1 ComboBox2.List() = Array(" ", "1km", "2km", "5km", "10km") ComboBox2.Value = " " End Sub
Bon ça c'est clarifié, donc pour le code, d'abord je commence par des "If" pour la vérification que l'user a bien rentré des données, sans quoi, je ne peux pas valider et poursuivre vers une autre fenêtre et je balance un message d'erreur, classique. Continuons.
Et c'est là que les choses se gâtent. Le tableau que vous avez en image commence à la colonne 49. Dans cette colonne je souhaite mettre le nom de la balise seulement. De la colonne 50 à 53 et de la ligne 3 à 6 du tableau, c'est ma zone ou je saisie la valeur de la balise. Sachant qu'il n'y aurait qu'une seule valeur par ligne pour une balise bien entendu.
Vu que je pars de la ligne 3 du tableau (les deux premières étant remplies et ne m'intéressant pas) je fais un "For Var = 3 ..." là ça va, ensuite je fais un MsgBox de débogage pour m'assurer que je suis bien rentré dans le "For" et là ça marche niquel.
Puis je fais mon test pour savoir si j'ai déjà une balise d'inscrite en colonne 49 ligne 3 sur le tableau (je n'en ai pas mon tableau est vide) et en même temps je regarde si j'ai bien sélectionné "1km" dans ma userform (chose que j'ai bien évidemment faite et avec la même syntaxe "1km"). Et là, mon MsgBox qui suit cette ligne ne s’exécute pas.
Quand j'appuie sur Valider, rien ne se passe. Les seules choses qui s’exécute sont mes MsgBox après le Next. Et j'ai la confirmation que mon Var est à 3, mais le Dog et ValeurMax sont totalement vides.
Ma question est donc, qu'est ce que j'ai loupé ? J'ai l'air de rentrer dans mon For, mais celui-ci ne semble pas s'incrémenter. Je ne rentre même pas dans mon test "If", wtf ?
Merci de votre temps et de la lecture, et si vous voulez aider un prog en galère ..
Charly/Arkadian
Partager