Paramétrage UserForm avec référence colonne

Mettez plutot "Num_non_attribue"

Les accents, espace et caractère spéciaux ce n'est jamais bon avec VBA

Le code

Private Sub CommandButton1_Click()
Dim ligne As Integer
Dim ret As Integer

With ThisWorkbook.Sheets("Classeur")
    On Error Resume Next
    ligne = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(Val(TextBox1.Value), LookIn:=xlValues, lookat:=xlWhole).Row
    If ligne = 0 Then MsgBox "le client recherché n'est pas dans la base de données": Exit Sub
    MsgBox .Range("G" & ligne).Value
    '----------------------------------------------------------------------------------------------------------------------------------------------------
    ret = MsgBox("Avez-vous eu le client au téléphone?", vbYesNo + vbDefaultButton2)
    If ret = vbYes Then
        .Range("A" & ligne & ":S" & ligne).Interior.Color = RGB(0, 96, 0)
    Else
        ret = MsgBox("Le numéro est-il attribué ?", vbYesNo + vbDefaultButton2)
        If ret = vbYes Then
            .Range("A" & ligne & ":S" & ligne).Interior.Color = RGB(255, 128, 32)
        Else
            Dim dlg As Integer
            dlg = ThisWorkbook.Sheets("Num_non_attribue").Range("A" & Rows.Count).End(xlUp).Row + 1
            .Range("A" & ligne & ":S" & ligne).Cut ThisWorkbook.Sheets("Num_non_attribue").Range("A" & dlg & ":S" & dlg)
            .Rows(ligne).EntireRow.Delete
        End If
        Unload Me
        Exit Sub
    End If
    ret = MsgBox("Lancer lien Questionnaire?", vbOKCancel + vbDefaultButton2)
    If ret = vbOK Then
        .Range("U9").Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
    End If
End With
Unload Me
End Sub

Cordialement

Merci pour votre aide ! Cela fonctionne !

Petite modification, peut-on mettre en vert après avoir appuyé sur "ok" à la question "lancer le questionnaire" plutôt que si l'on a eu le client au téléphone?

Dernier truc, si l'on clique sur "annuler" à la question "lancer le questionnaire", peut on barrer la ligne du client et permettre à l'utilisateur d'inscrire un commentaire dans une msg box qui inscrirait le message tapé par l'utilisateur dans la cellule correspondante au bout des infos client ?

Petite modification, peut-on mettre en vert après avoir appuyé sur "ok" à la question "lancer le questionnaire" plutôt que si l'on a eu le client au téléphone?

Oui mais alors une réponse Oui à la question 1 n'a plus de sens au niveau du code.
Dans ce cas, il serait plus logique que si on répond OUI à la question 1, la question relative à la demande de lancer le questionnaire soit directement affichée.

Dernier truc, si l'on clique sur "annuler" à la question "lancer le questionnaire", peut on barrer la ligne du client et permettre à l'utilisateur d'inscrire un commentaire dans une msg box qui inscrirait le message tapé par l'utilisateur dans la cellule correspondante au bout des infos client ?

Oui mais pas une Msgbox mais plutôt une inputbox. Le résultat serait placé en colonne T ?
Par rapport à cela j'ai une question, votre questionnaire n'est pas dans ce fichier ?

...cela modifie un peu tout le code cela ...

Quand je test sur mon programme c'est ce qu'il se passe, il me semble avoir caché la question "le n° est-il attribué" si la réponse à la question 1 est oui.

Effectivement, le résultat serait placé en colonne T

Et non, le questionnaire n'est pas dans le fichier, il est modéliser sur Google Forms

Suite à votre post --> https://forum.excel-pratique.com/s/goto/1064722, essayez le code comme ceci

Private Sub CommandButton1_Click()
Dim ligne As Integer
Dim ret As Integer

With ThisWorkbook.Sheets("Classeur")
    On Error Resume Next
    ligne = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(Val(TextBox1.Value), LookIn:=xlValues, lookat:=xlWhole).Row
    If ligne = 0 Then MsgBox "le client recherché n'est pas dans la base de données": Exit Sub
    On Error GoTo 0
    MsgBox .Range("G" & ligne).Value
    '----------------------------------------------------------------------------------------------------
    ret = MsgBox("Avez-vous eu le client au téléphone?", vbYesNo + vbDefaultButton2)
    If ret = vbYes Then 'reponse Oui au contact telephonique avec client

        ret = MsgBox("Lancer lien Questionnaire?", vbOKCancel + vbDefaultButton2)

        If ret = vbOK Then 'reponse Oui sur lancer questionnaire
            .Range("A" & ligne & ":T" & ligne).Interior.Color = RGB(0, 96, 0) 'mise en vert
            .Range("U9").Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True 'ajout hyperlien

        Else 'reponse Non sur lancer questionnaire
            Dim message As String

            message = InputBox("veuillez entre votre message", "Annulation Questionnaire")
            .Range("A" & ligne & ":T" & ligne).Font.Strikethrough = True 'barrer ligne
            If message <> "" Then .Range("T" & ligne) = message 'ajouter message en colonne T
        End If
        Exit Sub 'sortie macro

    Else 'response Non au contact telephonique avec client
        ret = MsgBox("Le numéro est-il attribué ?", vbYesNo + vbDefaultButton2)

        If ret = vbYes Then 'reponse Oui sur numero attribue
            .Range("A" & ligne & ":T" & ligne).Interior.Color = RGB(255, 128, 32)

        Else 'reponse Non sur sur numero attribue
            Dim dlg As Integer
            dlg = ThisWorkbook.Sheets("Num_non_attribue").Range("A" & Rows.Count).End(xlUp).Row + 1
            .Range("A" & ligne & ":T" & ligne).Cut ThisWorkbook.Sheets("Num_non_attribue").Range("A" & dlg & ":T" & dlg)
            .Rows(ligne).EntireRow.Delete
        End If
    End If
End With
Unload Me
End Sub

J'ai mis un petit commentaire derrière chaque Oui ou Non pour que vous sachiez à quelle action cela correspond

Bonjour,

merci pour votre aide !

Quand on appuie sur "annuler" à la question "lancer questionnaire" et que l'inputbox s'ouvre, une fois inscrit le commentaire cela met :

image

à la ligne :

image

Le commentaire ne s'inscrit pas en colonne T.

Et, une fois barré, il est possible de retaper le numéro du client et de recommencer le process, pourrais-t-on ne pas autoriser la relance des questions une fois le client barré ? ( Message d'erreur + "êtes vous sûr de vouloir continuer" si oui, relance du process sinon ferme usf?)

Aussi, une fois colorié en vert, pourrais-ton faire le même système que pour les barrés avec un message d'erreur "le client a déjà été appelé" et "voulez-vous l'interroger à nouveau?" si oui, préciser sur quel thématique avec un inputbox où l'on pourrait indiquer sur quoi il est interrogé?

1. Quand on appuie sur "annuler" à la question "lancer questionnaire" et que l'inputbox s'ouvre, une fois inscrit le commentaire cela met

Oui normal. Désolé.
Il faut enlever ceci sinon cela n'a pas de sens ---> .interior.color
J'ai corrigé dans le code dans mon post précédent

2. Et, une fois barré, il est possible de retaper le numéro du client et de recommencer le process, pourrais-t-on ne pas autoriser la relance des questions une fois le client barré ? ( Message d'erreur + "êtes vous sûr de vouloir continuer" si oui, relance du process sinon ferme usf?)

Si le client est barré, est-ce la question "avez-vous eu le client au téléphone" doit être posée ?. A mon avis, non

3. Aussi, une fois colorié en vert, pourrais-ton faire le même système que pour les barrés avec un message d'erreur "le client a déjà été appelé" et "voulez-vous l'interroger à nouveau?" si oui, préciser sur quel thématique avec un inputbox où l'on pourrait indiquer sur quoi il est interrogé?

c'est plus complexe là.... Attention à ce que le code ne devienne pas une "usine à gaz"

Ouki, merci !

C'est plus, si le client est barré, qu'un message d'erreur s'affiche quand on tape le code client dans le USF avec un "Etes vous sur de vouloir continuer" si oui, relance process sinon laisse barré. Car en fait, ces clients vont être interrogés sur 3 choses différentes (pas en meme temps) du coup, meme si la personne ne veut pas répondre à l'instant T, cela ne veut pas dire que plus tard elle ne sera pas ok.

Je comprends bien ^^' cela devient de plus en plus complexe ce que je vous demande.. :/ Ce serait plus pour faciliter le travail que pour en créer plus ^^'

donc si client est barré, on pose la question --> Client déjà appelé. Etes-vous sur de vouloir continuer
Si réponse non, on ferme l'usf et on laisse le client Barré
Si réponse oui, on continue le processus et on arrive directement à la question --> Avez-vous eu le client au téléphone ?

Ok pour cela ?

Autre chose si Oui, est-ce l'on doit alors enlever le barré sur la ligne ?

Oui, il faudrait le même processus pour les clients dont la ligne est en vert du coup.

Si l'on répond OUI à la question "êtes vous sûr de vouloir continuer", nous pouvons directement passer à la question "lancer userform" car nous avons déjà le client au téléphone, reste à savoir s'il veut bien y répondre cette fois ci

Si Oui, on laisse le barré et le orange jusqu'à la réponse de la question "lancer questionnaire" si oui, on enlève tout et on le passe en vert (car il aura répondu)

si on clique sur annuler, on le remet en orange et barré car il n'aura toujours pas souhaité répondre

Oulàlà...cela devient compliqué là...

C'est une nouvelle question "lancer userform" ?

Pas sûr mais essayez ce code

Private Sub CommandButton1_Click()
Dim ligne As Integer
Dim ret As Integer

With ThisWorkbook.Sheets("Classeur")
    On Error Resume Next
    ligne = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row).Find(Val(TextBox1.Value), LookIn:=xlValues, lookat:=xlWhole).Row
    If ligne = 0 Then MsgBox "le client recherché n'est pas dans la base de données": Exit Sub
    On Error GoTo 0
    MsgBox .Range("G" & ligne).Value
    'vérifier si client barré
    If .Range("A" & ligne).Font.Strikethrough = True Then 'verifie si client barre
        If MsgBox("Client déjà appelé. Etes-vous sur de vouloir continuer ?", vbYesNo + vbDefaultButton2) = vbNo Then 'cas Non
            Unload Me
            Exit Sub
        End if
    End If
    '----------------------------------------------------------------------------------------------------
    ret = MsgBox("Avez-vous eu le client au téléphone ?", vbYesNo + vbDefaultButton2)
    If ret = vbYes Then 'reponse Oui au contact telephonique avec client

        ret = MsgBox("Lancer lien Questionnaire?", vbOKCancel + vbDefaultButton2)

        If ret = vbOK Then  'reponse Oui sur lancer questionnaire et client non barré
            .Range("A" & ligne & ":T" & ligne).Interior.Color = RGB(0, 96, 0) 'mise en vert
            .Range("A" & ligne & ":T" & ligne).Font.Strikethrough = False 'enlever le barré
            .Range("U9").Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True 'ajout hyperlien

        Else 'reponse Non sur lancer questionnaire
            Dim message As String

            message = InputBox("veuillez entre votre message", "Annulation Questionnaire")
            .Range("A" & ligne & ":T" & ligne).Font.Strikethrough = True 'barrer ligne
            If message <> "" Then .Range("T" & ligne) = message 'ajouter message en colonne T
        End If
        Exit Sub 'sortie macro

    Else 'response Non au contact telephonique avec client
        ret = MsgBox("Le numéro est-il attribué ?", vbYesNo + vbDefaultButton2)

        If ret = vbYes Then 'reponse Oui sur numero attribue
            .Range("A" & ligne & ":T" & ligne).Interior.Color = RGB(255, 128, 32) 'mise en orange

        Else 'reponse Non sur sur numero attribue
            Dim dlg As Integer
            dlg = ThisWorkbook.Sheets("Num_non_attribue").Range("A" & Rows.Count).End(xlUp).Row + 1
            .Range("A" & ligne & ":T" & ligne).Cut ThisWorkbook.Sheets("Num_non_attribue").Range("A" & dlg & ":T" & dlg)
            .Rows(ligne).EntireRow.Delete
        End If
    End If
End With
Unload Me
End Sub

lancer questionnaire ** et non lancer UserForm pardon..

Quand je le lance, cela me met "end with" sans with

Quand je le lance, cela me met "end with" sans with

Juste oui. J'ai corrigé le code dans mon post précédent. Il manquait un END IF après le Exit Sub au début du code

Merci beaucoup cela fonctionne ! :)

Dernière petite question :

Est-il possible de mettre en premier la msgbox ("Client déjà appelé. Etes-vous sur de vouloir continuer ?") avant d'afficher le n° de téléphone seulement dans le cadre d'un client barré ? Et de n'afficher que le n° de téléphone que si la réponse est oui?

J'ai tenté de le faire mais cela modifie tout. Si ce n'est pas possible, ce n'est pas grave c'est un détail.

Est-il possible de mettre en premier la msgbox ("Client déjà appelé. Etes-vous sur de vouloir continuer ?") avant d'afficher le n° de téléphone seulement dans le cadre d'un client barré ?

C'est ce que le code fait.
Si votre client est barré et que vous répondez oui, le code vous ouvre la msgbox "Avez-vous eu le client au téléphone ?"
Si vous répondez Non le code ferme l'usf

Et de n'afficher que le n° de téléphone que si la réponse est oui?

Pour afficher le num de téléphone en cas de Oui uniquement, vous devez déplacer la ligne "MsgBox .Range("G" & ligne).Value" juste avant la ligne verte qui contient les pointillés. Donc juste au dessus de "ret = MsgBox("Avez-vous eu le client au téléphone ?" ....."

NB : juste un truc si vous ne le connaissez pas.
Vous pouvez faire du pas à pas dans un code pour vérifier ce qui se passe lors de son exécution. Pour ce faire dans votre cas, cliquez sur la première ligne du code (private sub command...), ensuite appuyez sur la touche F9 (ou FN + F9). Cela va mettre une couleur brune sur la ligne.

Ensuite faites comme si vous utilisiez l'usf, une fois que vous allez cliquer sur "Search", le code va s'arrêter sur la ligne brune. Il vous suffit alors d'appuyer sur F8 (ou FN + F8) pour exécuter le code pas à pas

Cordialement

Merci beaucoup tout fonctionne ! :)

Merci de votre patience !

Je vais prendre en compte cela et le faire à l'avenir ! merciii ! :)

Rechercher des sujets similaires à "parametrage userform reference colonne"