MsgBox si la colonne contient un mot

Bonjour,

Je veux détecter dans la colonne Z, le mot "Doublon" (Qui peut être écrit à plusieurs lignes)

Quand le mot est trouver, afficher un fenêtre avec Oui et Non.

Je sais comment faire afficher la fenêtre sans la condition. J'ai essayé plusieurs code mais ca ne marche pas..exemple d'une ligne que j'ai fait :

    If Application.WorksheetFunction.CountIf(Range("Z:Z"), "Doublon") = 1 Then
    Retour = MsgBox("Voulez-vous supprimer les doublons ?", vbYesNo + vbQuestion + vbDefaultButton1, "Demande de confirmation")
    If Retour = vbYes Then

    Else

    End If
    End If

Application.WorksheetFunction.CountIf(Range("Z:Z"), "Doublon") = 1

If Range("Z").Value Like "Doublon" Then

Application.WorksheetFunction.CountIf(Range("Z:Z"), 1) > 0

Voila ce que j'ai deja essayé

Quelqu'un a une idée ?

Merci

Bonjour Flow, bonjour le forum,

Ton code fonctionne très bien pour l'onglet actif. Si tu veux qu'il fonctionne sur un autre onglet que l'onglet actif il faut le spécifier. Par exemple pour l'onglet Feuil1 ça donnerait :

If Application.WorksheetFunction.CountIf(Worksheets("Feuil1").Range("Z:Z"), "Doublon") = 1 Then

En règle générale, dès que tu veux agir sur un autre onglet que l'onglet actif, il faut toujours le spécifier dans le code.

Bonjour, salut ThauThème,

J'ajouterais que si ton texte doublon est présent plus d'une fois, le message n’apparaît pas. Il faudrait remplacer = 1 par >= 1.

Personnellement je ferais quelque chose du genre :

Sub Test()

With Sheets("Machin") 'A adapter
    If Not .Range("Z:Z").Find("Doublon", LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then 'LookAt:=xlPart si "Doublon" n'est qu'une partie du texte contenu dans la cellule
        If MsgBox("Voulez-vous supprimer les doublons ?", vbYesNo + vbQuestion + vbDefaultButton1, "Demande de confirmation") = vbYes Then
             'Instructions si OUI
        Else
            'Instructions si NON
        End If
    End If
End With

End Sub

Bonjour ThauThème,

Merci pour ta réponse rapide.

Je travail seulement sur un onglet, c'est pour ca que je n'ai pas précisé.

Mais ca ne marche toujours pas.

En revanche si je l'écrit comme ca, ca fonctionne bien.

   If MsgBox("Voulez-vous supprimer les doublons ?", vbYesNo + vbQuestion + vbDefaultButton1, "Demande de confirmation") = vbYes Then
            .Range("L1").AutoFilter Field:=26, Criteria1:="<>" 'Tri les doublons
            .Range("L2:Z" & LigMax).SpecialCells(xlCellTypeVisible).Delete 'Supprime les doublons
            .Range("L1").AutoFilter Field:=26 'Retire le tri pour afficher toutes les données
            .Range("A2:1048576").Sort Key1:=Range("A1"), Order1:=xlAscending
        Else
            .Range("A2:1048576").Sort Key1:=Range("A1"), Order1:=xlAscending
        End If

Mais je voudrais que la MsgBox apparaisse seulement quand il y a un doublon

Je ne sais pas quoi faire de plus

Edit: Je test ton idée Pedro

Que se soit la sous la forme de

If Not .Range("Z:Z").Find("Doublon", LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then

ou

If Application.WorksheetFunction.CountIf(Worksheets("Feuil1").Range("Z:Z"), "Doublon") = 1 Then

J'ai l'impression que ca ne détecte pas vraiment le contenu de ma cellule.

Peut-être que vous verrez mieux sur le fichier directement.

17classeur1.xlsm (23.89 Ko)

J'ai volontairement 2 doublons, donc je lance la macro une première fois, ca marche niquel. Je lance une deuxième pour vérifier qu'il n'y a pas un doublon qui traine.

Normalement, il devrait m'afficher une fenêtre avec "Aucun doublon". Mais la boucle se fait dans le premier IF.

Vous voyez où je veux en venir ?

Bonjour le fil, bonjour le forum,

Faut toujours écouter Pedro !... C'est un balèze...

Si tu comptes tous les doublons de la colonne Z il y en a forcément 1 en Z1. Pour agir il faut que le nombre de doublons soit au moins égal à 2. Ça peut se coder comme Pedro le proposait :

If Application.WorksheetFunction.CountIf(Worksheets("Feuil1").Range("Z:Z"), "Doublon") > 1 Then

Dans le fichier que tu as fourni et qui intègre mon code, chez moi ça fonctionne.

Par contre VBA plante plus loin sur cette ligne (je t'invite à revoir la syntaxe) :

ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

@ThauThème

Bien vu ! Ca marche nickel !

@Pedro22

Je savais que ca allait bloqué ici, mais c'est bon j'ai réussi

Merci beaucoup à vous deux

Rechercher des sujets similaires à "msgbox colonne contient mot"