Apparition d'un MsgBox

cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012 - 20 août 2012 à 16:35
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012 - 22 août 2012 à 11:25
Bonjour,

je souhaiterai dans le code ci-après y intégrer une option en plus qui aurait pour objectif de m'afficher un MsgBox me disant "Données absentes". En résumé, lorsque je saisi dans mon TextBox1 un numéro, si la macro ne trouve pas le numéro qu'elle m'affiche "données absentes".

Voici mon code :
If Trim(Me.TextBox1) = "" Then Exit Sub
  Feuil4.Select 'feuille Plan audit'
Chemin = "G:\S - ISO\A - Audits"
   Feuille = "Planning 2012"
  Fichier = "Planning audits groupe Delpeyrat.xls"
  Recherche = Me.TextBox1


Avec ce code si je saisi un numéro dans mon TextBox1 et que ce numéro n'existe pas il me fait apparaître un #N/A dans la cellule alors que je voudrai seulement l'apparition de ce Message.

En espérant avoir été clair.

Merci.

15 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 août 2012 à 16:47
Bonjour,
Que veut dire un tel titre ?
Ce n'est pas l'affichage d'une msgbox, ton problème, mais déterminer si elle a ou non lieu d'êtere affichée !
Et ton exposé ne permet par ailleurs pas de savoir ce que tu recherches exactement et où tu le recherches !
Léger, tout cela !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
20 août 2012 à 17:22
Bonjour,
J'ai 2 fichiers :
1 fichier Rapport
1 fichier Planning audits groupe...

Dans le fichier Rapport dans la feuille Plan audit j'ai un bouton.
Ce bouton ouvre un TextBox1 où je saisi un numéro et je clique sur Ok.

En cliquant sur Ok le programme va chercher dans la colonne A de la feuille Planning 2012 du fichier Planning audits groupe... donc dans le 2ème fichier.

Si il trouve dans ce 2ème fichier le numéro saisi dans la TextBox1 il extrait les données de ce fichier pour les coller dans certaines cellules du 1er fichier qui est Rapport.

Le problème avec le code ci-dessus c'est que si je saisi un numéro dans le TexBox1 et qu'il n'est pas dans la colonne A de la feuille Planning 2012 du fichier Planning audits groupe..., il m'indique des # dans les cellules receveuses.

Par contre j'ai construit un autre code mais celui-là m'affiche le MsgBox avec la phrase "Données absentes" mais même si le numéro saisi dans la TextBox1 est présent dans la colonne A du 2ème fichier.

Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim Chemin As String
Dim Fichier As String
Dim Feuille As String
Dim Recherche As String

   Feuil4.Select 'feuille Plan audit'
   Chemin = "G:\S - ISO\A - Audits"
   Fichier = "Planning audits groupe....xls"
   Feuille = "Planning 2012"
   On Error Resume Next
  Set wb = GetObject(Chemin & Fichier & Feuille)
  If Error <> 0 Then MsgBox "Données absentes": Exit Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 août 2012 à 17:32
Le problème avec le code ci-dessus c'est que si je saisi un numéro dans le TexBox1 et qu'il n'est pas dans la colonne A de la feuille Planning 2012 du fichier Planning audits groupe..., il m'indique des # dans les cellules receveuses.

Je ne vois pas ton code de recherche dans la colonne A.
S'il est basé (comme il se doit) sur l'utilisation de la méthode Find, il doit retourner une plage.
A toi d'établir une expression conditionnelle si cette plage est Nothing.

Je ne vois pas du tout le rapport entre le code montré (ton second) et ce que tu dis vouloir rechercher



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
20 août 2012 à 17:57
Je fais apparaître le code complet tel qu'il fonctionne vu qu'il m'extrait les données issues du 2ème fichier vers le 1er. Sauf que si on saisi dans le TextBox1 un numéro qui n'est pas dans la colonne A du 2ème fichier il m'affiche des #. Pour le reste il extrait correctement.

Private Sub CommandButton1_Click()
Dim Chemin As String
Dim Fichier As String
Dim Feuille As String
Dim Recherche As String

  If Trim(Me.TextBox1) = "" Then Exit Sub
  Feuil4.Select 'feuille Plan audit'
Chemin = "G:\S - ISO\A - Audits"
   Feuille = "Planning 2012"
  Fichier = "Planning audits groupe Delpeyrat.xls"
  Recherche = Me.TextBox1


  Range("H9").ClearContents
 With Range("H6")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,16,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,16,false),"""")"
 If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@" 'Numéro rapport audit'
      Range("H9") = Recherche
      .Value = .Value
   End If
      
 With Range("B19")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,22,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,22,false),"""")"
 If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@"
      Range("H9") = Recherche
      .Value = .Value
    End If
  
 With Range("B6")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,9,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,9,false),"""")"
  If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@" 'Numéro rapport audit'
      Range("H9") = Recherche
      .Value = .Value
   End If
  
  
  
 With Range("B8")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,5,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,5,false),"""")"
 If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@" 'Numéro rapport audit'
      Range("H9") = Recherche
      .Value = .Value
   End If
 
 
 
 With Range("B10")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,7,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,7,false),"""")"
 If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@" 'Numéro rapport audit'
      Range("H9") = Recherche
      .Value = .Value
   End If
 
 
 With Range("B17")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,19,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,19,false),"""")"
 If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@" 'Numéro rapport audit'
      Range("H9") = Recherche
      .Value = .Value
   End If
 
 
 
 With Range("B18")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,20,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$T160,20,false),"""")"
 If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@" 'Numéro rapport audit'
      Range("H9") = Recherche
      .Value = .Value
   End If
 
 
 With Range("A24")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,10,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,10,false),"""")"
 If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@" 'Numéro rapport audit'
      Range("H9") = Recherche
      .Value = .Value
   End If
 
 
 
 With Range("A28")
 .Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,11,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,11,false),"""")"
 If Not IsError(.Value) Then
      Range("H9").NumberFormat = "@" 'Numéro rapport audit'
      Range("H9") = Recherche
      .Value = .Value
   End If
    
 End With
 End With
 End With
 End With
 End With
 End With
 End With
 End With
 End With
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 août 2012 à 18:23
Houla !
combien de fois la même chose !
Déjà : avant d'aller plus loin :
Définis la plage à traiter (vois Union dans ton aide VBA) et traite-la d'un coup


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
21 août 2012 à 11:27
Change ton code
If Trim(Me.TextBox1) = "" Then Exit Sub
  Feuil4.Select 'feuille Plan audit'
Chemin = "G:\S - ISO\A - Audits"
   Feuille = "Planning 2012"
  Fichier = "Planning audits groupe Delpeyrat.xls"
  Recherche = Me.TextBox1


par celui ci

If Trim(Me.TextBox1) = "" Then 
  Feuil4.Select 'feuille Plan audit'
Chemin = "G:\S - ISO\A - Audits"
   Feuille = "Planning 2012"
  Fichier = "Planning audits groupe Delpeyrat.xls"
  Recherche = Me.TextBox1
else
  MsgBox "blalbla", vbOKOnly, "erreur"
end if


ajoute le Exit Sub après le Msgbox si tu veux vraiment le faire sortir.
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
21 août 2012 à 17:06
Bonjour,

Ok j'ai fait comme indiqué et il m'affiche la MsgBox mais lorsque je referme cette fenêtre il m'affiche le message "Erreur d'exécution '1004', Erreur définie par l'application ou par l'objet" et en cliquant sur débogage il m'affiche la ligne suivante en jaune :
.Formula = "=IF(VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,16,false)<>0,VLOOKUP(""" & Recherche & """,'" & Chemin & "\[" & Fichier & "]" & Feuille & "'!$A6:$V160,16,false),"""")"
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
22 août 2012 à 09:12
Ajoute le exit sub après le MsgBox "blalbla", vbOKOnly, "erreur"
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
22 août 2012 à 09:24
Je viens d'intégrer Exit Sub comme suit :
"MsgBox "Données absentes", vbOKOnly, "erreur" : Exit Sub"
malheureusement il m'affiche le MsgBox même si le numéro saisi dans le TextBox1 existe dans le 2ème fichier colonne A.

On m'a dit d'utiliser la commande Union mais je t'avouerai que j'ai jamais utilisé cette commande donc je ne sais absolument pas comment m'y prendre.
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
22 août 2012 à 09:45
P'TIN C TELLEMENT GROS QUE JE N'AVAIS PAS VU!

If Trim(Me.TextBox1) = "" Then TOTALEMENT FAUX

bref voici ce qui devrais fonctionner
If Trim(Me.TextBox1) <> "" Then 
  Feuil4.Select 'feuille Plan audit'
Chemin = "G:\S - ISO\A - Audits"
   Feuille = "Planning 2012"
  Fichier = "Planning audits groupe Delpeyrat.xls"
  Recherche = Me.TextBox1
else
  MsgBox "blalbla", vbOKOnly, "erreur"
  Exit Sub
end if
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
22 août 2012 à 10:00
En rectifiant si le numéro figure dans le2ème fichier colonne A, l'extraction des données se fait sans problème.

Par contre si je saisi un numéro qui n'existe pas dans ce 2ème fichier je n'ai pas le MsgBox qui apparaît. Il ne me maque que #N/A dans les cellules receveuses.
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
22 août 2012 à 10:17
Le code ci-dessous
If Trim(Me.TextBox1) <> "" Then 
  Feuil4.Select 'feuille Plan audit'
Chemin = "G:\S - ISO\A - Audits"
   Feuille = "Planning 2012"
  Fichier = "Planning audits groupe Delpeyrat.xls"
  Recherche = Me.TextBox1
else
  MsgBox "blalbla", vbOKOnly, "erreur"
  Exit Sub
end if


N'est pas fait pour savoir si le fichier existe ou non. Il faut être claire la-dessus.

Je pense car tu écris "l'extraction des données se fait sans problème. " qu'il na plus riens à chercher sur ce bout de code il faut voir le reste.
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
22 août 2012 à 10:51
J'ai changé le code par celui-ci
rivate Sub CommandButton1_Click()
Dim Chemin As String
Dim Fichier As String
Dim Feuille As String
Dim Recherche As String
Dim wb As Workbook

  Feuil4.Select 'feuille Plan audit'
  Chemin = "G:\S - ISO\A - Audits"
  Feuille = "Planning 2012"
  Fichier = "Planning audits groupe Delpeyrat.xls"
  Recherche = TextBox1.Text 
  On Error Resume Next
  Set wb = GetObject(Chemin & Fichier & Feuille)
  If error <> 0 Then MsgBox "Données absentes": Exit Sub


Avec ce code il m'affiche toujours "Données absentes" même si le numéro saisi dans le TextBox1 est présent dans le 2ème fichier colonne A.

N'y a t'il pas moyen d'adapter ce code ou faut-il revoir tout le code ?
0
4u4me4us Messages postés 780 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 30 octobre 2013 3
22 août 2012 à 11:13
"N'y a t'il pas moyen d'adapter ce code ou faut-il revoir tout le code ?"

Bonne question! Il faut que tu te renseignes sur le union peut-être que cela t'aidera. Mais moi je connais pas.

Regarde si GetObject est correctement utiliser et test en tapant le paramètre à la main sans variables.
0
cs_thomasdu40 Messages postés 22 Date d'inscription vendredi 20 août 2010 Statut Membre Dernière intervention 22 août 2012
22 août 2012 à 11:25
Ok en tout cas merci de m'avoir aidé.
0
Rejoignez-nous