Je me remets à vous car je ne trouve aucune explication qui me permet de trouver le problème dans ma macro.
J'ai programmé un outil qui fonctionne bien. Malheureusement, je bute sur un détail essentiel. et ce dernier détail m'empêche de mettre à disposition cet outil aux collègues.
Sur mon userform1, j'ai le bouton "envoi de la demande". Quand je clique dessus, il fait un certain nombre de chose. Dont incrémenter une cellule sur mon onglet "Paramètres".
J'ai réalisé ce code :
VB:
If Worksheets("Feuil2").Range("C4").Value = "A" Then
Worksheets("Paramètres").Range("AO2").Value = Worksheets("Paramètres").Range("AO2").Value + Worksheets("Paramètres").Range("AQ2").Value
End If
PS : Pour info j'aurai pu faire ceci ça fonctionne aussi :
VB:
If Worksheets("Feuil2").Range("C4").Value = "A" Then
Worksheets("Paramètres").Range("AO2").Value = Worksheets("Paramètres").Range("AO2").Value + 1
End If
Mais le problème, Quand j'ouvre le fichier, je tape les infos sur la partie "Critères de la commande" sur l'userform 1 (C'est cette zone la que les données en partie va se copier coller sur la Feuil2 du classeur).
Quand je clique :
S'il détecte la lettre A en C4 sur Feuil2, il incrémente ma cellule AO2 dans l'onglet "Paramètres" du classeur.
Malheureusement, il ne fonctionne pas dès le premier clique, il est censé incrémenter dès respect de la condition et à chaque clique.
Il fonctionne très bien quand je réalise à partir de la deuxième fois jusqu'à fermeture du fichier. Mais quand je l'ouvre à nouveau et fait la première demande en cliquant dessus, ma cellule ne s'incrémente pas, je dois réaliser à nouveau une nouvelle fois pour que cela fonctionne.
Ce que je souhaiterai c'est à l'ouverture quand je fais la première demande dans ce formulaire en cliquant sur ce bouton "envoi de la demande" qu'il m'incrémente directement et qu'il n'attende pas que je fasse la deuxième et même manipulation pour qu'il le fasse.
Je ne sais pas si c'est à cause d'un autre code que j'ai fait qui fait que cela bloque.
Déjà, première indication, pour alléger ton code à la lecture tu pourrais faire ceci :
VB:
If Worksheets("Feuil2").Range("C4") = "A" Then
With Worksheets("Paramètres")
.Range("AO2") = .Range("AO2") + .Range("AQ2")
End With
End If
Ca t'éviterais d'avoir à retaper 120 fois le nom de la feuille (et le .Value est pas nécessaire aussi, la méthode Range te renvoie sa valeur par défaut).
Sinon, tu as essayé de stocker la valeur de C4 dans une variable et d'incrémenter ou non suivant cette variable, plutot que suivant la valeur de la cellule ?
Déjà, première indication, pour alléger ton code à la lecture tu pourrais faire ceci :
VB:
If Worksheets("Feuil2").Range("C4") = "A" Then
With Worksheets("Paramètres")
.Range("AO2") = .Range("AO2") + .Range("AQ2")
End With
End If
Ca t'éviterais d'avoir à retaper 120 fois le nom de la feuille (et le .Value est pas nécessaire aussi, la méthode Range te renvoie sa valeur par défaut).
Sinon, tu as essayé de stocker la valeur de C4 dans une variable et d'incrémenter ou non suivant cette variable, plutot que suivant la valeur de la cellule ?
J'ai trouvé la solution, j'ai ouvert un module, entré le code dans ce module et sur mon bouton Envoi de la demande j'ai appelé mon module avec la fonction Call