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 !

Mouchty85

XLDnaute Occasionnel
Bonjour a tous, je réalise un petit programme dans lequel je me trouve confonter a un petit problème.

Mon code :

Private Sub AjouterDésignation_Click()

Sheets("Paramètre").Select

If SaisieDésignation.Value = "" Then
MsgBox " Cette opération n'est pas possigble : Aucune désignation n'est écrite", vbCritical, "ATTENTION : Valeur de la désignation non existante"
Else
For i = 1 To Range("PDésignation").Rows.Count
If SaisieDésignation.Value = Range("PDésignation").Cells(i, 1).Value Then
MsgBox "La désignation :" & SaisieDésignation & " existe déja." & Chr(13) & "Merci de changé l'intitulé si vous souhaitez toujours ajouter cette désignation", vbCritical, "ATTENTION : Désignation déja existante"
Else
NL = Range("PDésignation").Rows.Count
Range("PDésignation").Cells(NL, 1).EntireRow.Select
Selection.Insert Shift:=xlDown
Range("PDésignation").Cells(NL - 1, 1).Value = SaisieDésignation.Value
End If
Next i
End If

End Sub


Explication :
Je souaiterai que ma macro s'arrète si la valeur de la combox (SaisieDésignation) a été insérer dans mon tableau.

Le problème auquel je suis confronté, c'est qui va m'insérer autant de fois la désignation que de ligne qu'avait mon tableau au début de la macro.

Merci pour votre aide.

Mouchty85
 
Re : Arréter une macro?

Bonjour Mouchty, toutes et tous

J'ai modifié le code de ta marco en rajoutant 2 lignes de code, Exit For ou Exit Sub, tu gardes l'une ou l'autre, a priori les deux ensemble ne sont pas utiles dans ce cas.

Code:
Private Sub AjouterDésignation_Click()

Sheets("Paramètre").Select

If SaisieDésignation.Value = "" Then
    MsgBox " Cette opération n'est pas possigble : Aucune désignation n'est écrite", vbCritical, "ATTENTION : Valeur de la désignation non existante"
Else
    For i = 1 To Range("PDésignation").Rows.Count
        If SaisieDésignation.Value = Range("PDésignation").Cells(i, 1).Value Then
        MsgBox "La désignation :" & SaisieDésignation & " existe déja." & Chr(13) & "Merci de changé l'intitulé si vous souhaitez toujours ajouter cette désignation", vbCritical, "ATTENTION : Désignation déja existante"
    Else
        NL = Range("PDésignation").Rows.Count
        Range("PDésignation").Cells(NL, 1).EntireRow.Select
        Selection.Insert Shift:=xlDown
        Range("PDésignation").Cells(NL - 1, 1).Value = SaisieDésignation.Value
        [COLOR="Red"]Exit For [/COLOR][COLOR="Green"]'pour sortir de la boucle
        'ou[/COLOR]
        [COLOR="red"]Exit Sub [/COLOR][COLOR="green"]'pour sortir de la procédure[/COLOR]
        End If
    Next i
End If

Bonne journée
@+
 
Dernière édition:
Re : Arréter une macro?

Bonjour,
bonjour Pierrot93, plud rapide que moi.....

je n'ai pas regardé à fond ton exemple mais tu peux procéder selon les méthodes suivantes

quand tu as inséré, tu forces
i=Range("PDésignation").Rows.Count
ta boucle s'arrêtera d'elle-même

idem avec exit for
 
- 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
4
Affichages
735
Réponses
3
Affichages
923
Réponses
7
Affichages
830
Réponses
5
Affichages
688
Réponses
0
Affichages
657
Retour