Ne pas prendre en compte les cellule vide

Bonjour le Forum

J'ai eu l'aide sur un fichier de Jean-Eric sur ce forum

https://forum.excel-pratique.com/viewtopic.php?p=642926#p642926

toutefois je viens de rendre compte d'un souci. si je ne remplis pas la case IDENTIFIANT le système me compte toute les case vide de la colonne.

je cherche le bout de code qui dit que si la textbox20 est vide alors ne rien faire.

Voici le bout de code

Dim ws As Worksheet
Dim rng As Range
Dim x As Double
    Set ws = ActiveWorkbook.Worksheets("2017")
    Set rng = ws.Range("AD:AD")
    x = WorksheetFunction.CountIf(rng, TextBox20.Value)
        If x > 1 Then
        MsgBox "Ce nom a déjà été saisi " & x & " fois.", 64, "Attention !..."
    End If

Et mon fichier test

10pilotage-test.xlsm (166.48 Ko)

Merci de votre aide.

Bonjour Reinruof77 le forum

si je ne remplis pas la case IDENTIFIANT le système me compte toute les case vide

bah oui je pense que c'est tout à fait normal, si la case est vide il compte les cases vides logique

a+

Papou

Bonjour Paritec

Je suis d'accord et justement je voudrais ajouter dans la macro une ligne qui dit que si la textbox20 est vide alors ne rien faire.

Bien cordialement

Re Reinruof le forum

bah oui mais j'ai cherché dans ton fichier ta macro et je ne l'ai pas trouvé et comme tu n'expliques rien tu ne dis pas ou est quoi??

bah je te dis ce que je pense :

mais autrement tu peux tester, tu remplaces x = work...... par ci-dessous

if textbox20 <>"" then x = WorksheetFunction.CountIf(rng, TextBox20.Value) else x=0

a+

Papou

Re bonjour

Autant pour moi il est vrais que j'aurais du etre un peu plus precis.

la Macro ce trouve dans l'userform1 et concerne le CommandButton2 .

Le but de cette macro est de vérifier si un IDENTIFIANT a déjà été saisie sur la feuille 2017 ET OU la feuille pilotage.

Merci de ton aide.

Bien Cordialement

re bonjour

Alors cela fonctionne Mais comment faire pour ne plus avoir le message .

Merci encore de votre aide

007

Re Reinof77 le forum

comment veux tu que je modifie je n'ai pas la macro!!!

donne moi la macro ou le fichier avec la macro moi je n'ai pas dans le commandbutton2 ce message

a+

Papou

Re

La je ne comprend pas le fichier est dans mon premiers post et je viens de le telecharger et il y a tout.

le revoila

Re bonjour Reinruof le forum

bah moi je cherche ton message "Ce demandeur a déjà*" et je ne le trouve pas alors tu peux me dire qu'il y est, je ne le trouve pas il se trouve dans quelle macro????

Les déclarations de variables n'importe ou, cela sent très fort le bricolage !!!

a+

Papou

re

Je reconnais que c'est du bricolage j'apprend au fur et a mesure.

la macro ce trouve dans l'userform1 et Private Sub CommandButton2_Click

Voici de code

Private Sub CommandButton2_Click()
Dim Plg As Range
Dim Nb As Boolean, Nb1 As Boolean, Nb2 As Boolean

tout = ComboBox2.Value & DTPicker1.Value & TextBox4.Value
For N = 3 To Range("A" & Rows.Count).End(xlUp).Row
     If Range("C" & N) & Range("F" & N) & Range("N" & N) = tout Then
         MsgBox "toto"
         Exit Sub
     End If
Next
If Trim(Me.ComboBox2) = "" Or Trim(Me.TextBox3) = "" Then
    MsgBox "Le Site et La Référence sont des données obligatoires"
    Exit Sub
    End If

Set Plg = Sheets("pilotage").Cells(Rows.Count, 1).End(xlUp)(2)
Plg = UserForm1.TextBox2 'aurore
Plg.Offset(, 0) = UserForm1.ComboBox2
Plg.Offset(, 1) = UserForm1.TextBox2.Value 'DT
Plg.Offset(, 2) = UserForm1.ComboBox2 'SITE
Plg.Offset(, 7) = UserForm1.TextBox27 'NON VALIDATION
Plg.Offset(, 4) = UserForm1.TextBox3.Value 'reference
Plg.Offset(, 5) = UserForm1.DTPicker1 'date evenement
Plg.Offset(, 6) = UserForm1.TextBox1 'HEURE
Plg.Offset(, 3) = UserForm1.DTPicker2 'MAIL
Plg.Offset(, 8) = UserForm1.DTPicker3 'DATE SAISIE
Plg.Offset(, 9) = UserForm1.ComboBox4 'RISQUE
Plg.Offset(, 10) = UserForm1.ComboBox3 'TYPE
Plg.Offset(, 11) = UserForm1.ComboBox23
Plg.Offset(, 12) = UserForm1.ComboBox5 'LIEUX

Plg.Offset(, 13) = UserForm1.TextBox4 '
Plg.Offset(, 14) = UserForm1.TextBox5 '
Plg.Offset(, 15) = UserForm1.TextBox6 '
Plg.Offset(, 16) = UserForm1.TextBox7 '
Plg.Offset(, 17) = UserForm1.TextBox8 '
Plg.Offset(, 18) = UserForm1.TextBox9 '
'victime
Plg.Offset(, 19) = UserForm1.TextBox10 '
Plg.Offset(, 20) = UserForm1.TextBox11 '
Plg.Offset(, 21) = UserForm1.TextBox12 '
Plg.Offset(, 22) = UserForm1.TextBox13 '
Plg.Offset(, 23) = UserForm1.TextBox14 '
Plg.Offset(, 24) = UserForm1.TextBox15 '
Plg.Offset(, 25) = UserForm1.TextBox16 '
Plg.Offset(, 26) = UserForm1.TextBox17 '
'auteur
Plg.Offset(, 27) = UserForm1.TextBox18 '
Plg.Offset(, 28) = UserForm1.ComboBox7 '
Plg.Offset(, 29) = UserForm1.TextBox20 'identifiant
Plg.Offset(, 30) = UserForm1.ComboBox6

'INTERVENANT
Plg.Offset(, 31) = UserForm1.ComboBox10
Plg.Offset(, 32) = UserForm1.ComboBox11
Plg.Offset(, 33) = UserForm1.ComboBox12
Plg.Offset(, 34) = UserForm1.ComboBox13
Plg.Offset(, 35) = UserForm1.ComboBox14
Plg.Offset(, 36) = UserForm1.ComboBox15
Plg.Offset(, 37) = UserForm1.ComboBox8 'ACTION1
Plg.Offset(, 38) = UserForm1.ComboBox9 'ACTION2
Plg.Offset(, 40) = UserForm1.DTPicker4
Plg.Offset(, 41) = UserForm1.ComboBox16
Plg.Offset(, 42) = UserForm1.ComboBox17
Plg.Offset(, 43) = UserForm1.ComboBox18
Plg.Offset(, 44) = UserForm1.ComboBox19
Plg.Offset(, 45) = UserForm1.ComboBox20
Plg.Offset(, 46) = UserForm1.ComboBox21
Plg.Offset(, 47) = UserForm1.ComboBox22
'verifie sur feuille pilotage
If Application.WorksheetFunction.CountIf(Range("AD:AD"), TextBox20.Value) > 1 Then
  MsgBox "Ce nom a déjà été saisi EN 2018 "
    'verifie sur feuille 2017
Dim ws As Worksheet
Dim rng As Range
Dim x As Double
    Set ws = ActiveWorkbook.Worksheets("2017")
    Set rng = ws.Range("AD:AD")
    If TextBox20 <> "" Then x = WorksheetFunction.CountIf(rng, TextBox20.Value) Else x = 0

        MsgBox "Ce nom a déjà été saisi " & x & " fois en 2017", 64, "Attention !..."

End If
Unload Me

UserForm1.Show
 If Me.ComboBox2.ListIndex = -1 Then
            Sheets("Feuil2").Cells(1, 1).End(xlDown).Offset(1, 0).Value = Me.ComboBox2.Value
          Sheets("Feuil2").Cells(1, 2).End(xlDown).Offset(1, 0).Value = Me.TextBox2.Value

Call Macro1
End If

End Sub

Merci encore de ta patience et de ton aide.

Re bonjour Reinuof77 le forum

tu me prends pour une bille ou quoi?????

tu me mets que tu as un message ATTENTION! Ce Demandeur a déjà etc etc et dans la macro que tu viens de m'envoyer il est écrit quoi???

je ne suis pas fou, je savais bien que ce texte n'existait pas dans la macro

bref maintenant je modifie

a+

Papou

Re Reinuof 77 le forum

voilà tu remplaces par le ci-dessous

a+

Papou

Set ws = ActiveWorkbook.Worksheets("2017")
    Set rng = ws.Range("AD:AD")
        If TextBox20 <> "" Then
                x = WorksheetFunction.CountIf(rng, TextBox20.Value)      
                MsgBox "Ce nom a déjà été saisi " & x & " fois en 2017", 64, "Attention !..."
        end if
End If

Re reinuof77 le forum

il faut aussi modifier le contrôle sur la feuille active

a+

papou

    if  TextBox20 <>"" then 
              If Application.WorksheetFunction.CountIf(Range("AD:AD"), TextBox20.Value) > 1 Then
                   MsgBox "Ce nom a déjà été saisi EN 2018 "
            end if
   end if
    'verifie sur feuille 2017

Set ws = ActiveWorkbook.Worksheets("2017")
    Set rng = ws.Range("AD:AD")
        If TextBox20 <> "" Then
                x = WorksheetFunction.CountIf(rng, TextBox20.Value)      
                MsgBox "Ce nom a déjà été saisi " & x & " fois en 2017", 64, "Attention !..."
        end if
End If

Re PARITEC

tu as été plus rapide que moi.

un Gros Merci. pour ta patience et ton implication .

Bien Cordialement

Re Reinuof77 le forum

oui mais cela aurait été baucoup plus vite si tu donnais pas des indications Farfelues du style

ton message ATTENTION .... Ce demandeur a déjà etc etc..

car ce message n'existe pas dans ton fichier, donc impossible à trouver !!!!

a+

Papou

re bonjour paritec

en fait il existe mais dans mon fichier ORIGINAL qui contient des donnés confidentiel d'ou l'erreur.

j'en profite pour te demander comment je peux faire pour indiquer le nombre de fois ou l'identifiant a été saisie sur la feuille active

comme cela

 
                MsgBox "Ce nom a déjà été saisi " & x & " fois en 2018", 64, "Attention !..."

j'ai essayer avec ce code

Set ws = ActiveWorkbook.Worksheets("pilotage")
    Set rng = ws.Range("AD:AD")
        If TextBox20 <> "" Then
                x = WorksheetFunction.CountIf(rng, TextBox20.Value)      
                MsgBox "Ce nom a déjà été saisi " & x & " fois en 2018", 64, "Attention !..."
        end if
End If

Mais j'ai un message a la première saisie:"Ce nom a déjà été saisi 1 fois en 2018" alors que c'est la première fois .

Bien Cordialement

Re Bonjour reinuhof 77 le forum

Mais j'ai un message a la première saisie:"Ce nom a déjà été saisi 1 fois en 2018" alors que c'est la première fois .

alors toi si tu n'existais pas il faudrait t'inventer !!!

si tu fais le contrôle dans ta colonne est que le nombre de fois trouvé est 1 il t'affiche ce nom a été saisi 1 fois ou est l'erreur???

Il n'y a pas d'erreur sauf qu'il faut lui dire si

If TextBox20 <> "" Then
               x = WorksheetFunction.CountIf(rng, TextBox20.Value)  
             if x>1 then     
                     MsgBox "Ce nom a déjà été saisi " & x-1 & " fois en 2018", 64, "Attention !..."
            end if
end if

a+

Papou

Merci je regarde ça tout à l'heure je suis à l'hôpital pour mon fils.

Désolé je débute.

Merci encore

Bonjour reinruof77, le forum,

C'est bien normal que ton fils passe avant Excel ! j'espère pour lui et toi qu'c'est rien de grave !!!

Pour Excel, t'inquiète pas si tu fais quelques fautes : nous aussi, quand on a débuté, c'était pareil ! pas vrai, paritec ? quand tu essayeras la solution de paritec, ça marchera sûrement très bien ! sinon, en cas de bug de dernière minute sur ton fichier original confidentiel, il te suffira d'indiquer ce qui ne vas pas, et on trouvera bien la correction adéquate à apporter !

dhany

Bonjour a tous

Deja Merci pour ton soutient dhany

Mon fils va mieux en effet ça santé c'est aranger ont a eu trés peur car il a eu une meningite.

pour en revenir a la macro cela fonctionne parfaitement.

Merci beaucoup de votre aide.

Bon courage a tous.

Rechercher des sujets similaires à "pas prendre compte vide"