IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

recherche #N/A en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut recherche #N/A en VBA
    Bonjour à tous,

    J'ai un problème avec ma macro sur une recherche de valeur contenant des #N/A.

    Pour faire rapide, je souhaite qu'Excel face une recherche sur une plage donnée, et s'il rencontre un #N/A qu'il active le filtre de cette même plage.

    J'ai créé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     Set R = Sheets("extraction").Range("R:R").Find(Error)
       If Not R Is Nothing Then
       reponse = MsgBox("Il y a des #N/A dans le tableau d'extraction. Complétez la table avant édition du TCD", vbOKOnly)
       Selection.AutoFilter Field:=18, Criteria1:="#N/A"
       Else
        Sheets("Balance IG").Select
        Range("E8").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        ActiveWindow.SelectedSheets.PrintOut Copies:=1
       End If
    Le problème vient qu'il active la boite de dialogue qu'il y ait ou pas de #N/A. J'ai essayé avec la formule Each sauf qu'il m'affiche la boite à chaque #N/A.

    Pouvez-vous m'aider ?

    Je vous remercie par avance de votre aide.

    Bonne journée à tous

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Je ferais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim Cel As Range, Plage As Range
     
    With Sheets("extraction")
        Set Plage = .Range("R1:R" & .Range("R" & Rows.Count).End(xlUp).Row)
     
        For Each Cel In Plage
            If Application.WorksheetFunction.IsNA(Cel.Value) = True Then
                MsgBox "Il y a des #N/A dans le tableau d'extraction. Complétez la table avant édition du TCD"
                Plage.AutoFilter Field:=1, Criteria1:="#N/A"
                Exit For
            Else
                '...
                '...
            End If
        Next
    End With

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut
    Bonjour Fring,

    merci pour ton aide. Ton code marche bien... sauf lorsque la condition else est renseignée. Cette dernière devient "prioritaire" dans l'exécution du code alors qu'elle ne devrait s'exécuter que si le If n'est pas valable.

    Tu trouveras ci-dessous le code complet que j'ai fait à partir du tien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim Cel As Range, Plage As Range
     
    With Sheets("Extraction")
    Set Plage = .Range("R1:R" & .Range("R" & Rows.Count).End(xlUp).Row)
     
    For Each Cel In Plage
    If Application.WorksheetFunction.IsNA(Cel.Value) = True Then
    MsgBox "Il y a des #N/A dans le tableau d'extraction. Complétez la table avant édition du TCD"
    Plage.AutoFilter Field:=1, Criteria1:="#N/A"
    Exit For
    Else
    Sheets("Balance IG").Select
    Range("E8").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    Exit For
    End If
    Next
    End With
    Mon souhait est que mon TCD ne soit pas activé ni imprimé s'il y a un #N/A dans ma source. S'il n'y en a pas en revanche, l'action doit se réaliser....

    Comment faire ?

    Merci pour ton aide

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Par défaut
    Fring Rebonjour,

    C'est bon j'ai résolu mon pb par une solution moins académique (en passant par une cellule qui me calcule le nb de #N/A).

    En tout cas si tu as une solution directe via le code je suis quand même preneur, histoire de m'instruire un peu !

    Bonne journée

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Tu pourrais faire comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Dim Cel As Range, Plage As Range, Verif As Boolean
     
    With Sheets("Extraction")
        Set Plage = .Range("R1:R" & .Range("R" & Rows.Count).End(xlUp).Row)
        For Each Cel In Plage
            If Application.WorksheetFunction.IsNA(Cel.Value) = True Then
                MsgBox "Il y a des #N/A dans le tableau d'extraction. Complétez la table avant édition du TCD"
                Plage.AutoFilter Field:=1, Criteria1:="#N/A"
                Verif = True
                Exit For
            End If
        Next
    End With
     
    If Verif = False Then
        Sheets("Balance IG").Select
        Range("E8").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
        ActiveWindow.SelectedSheets.PrintOut Copies:=1
    End If

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Désolé de m'incruster dans cette discussion mais ne serait-il pas intéressant d'abord de faire en sorte qu'il n'y ait pas ce message d'erreur dans la feuille Excel.
    Je ne sais pas ce qui provoque ce message d'erreur mais si c'est un VlookUp/RechercheV, remplacer par "Pas trouver" ou par tout autre chaîne de caractères par exemple.
    [EDIT] Un petit tuto ici
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [WD-2007] Pb de recherche par Find en VBA
    Par canard338 dans le forum VBA Word
    Réponses: 7
    Dernier message: 18/02/2011, 22h21
  2. [AC-2003] Recherche de doublons avec VBA
    Par Dokko974 dans le forum VBA Access
    Réponses: 9
    Dernier message: 30/12/2010, 21h00
  3. Réponses: 3
    Dernier message: 15/01/2008, 14h59
  4. Recherche de caractères en VBA
    Par Khab' dans le forum Access
    Réponses: 8
    Dernier message: 12/02/2007, 15h18
  5. [débutant] recherche sur dates en VBA
    Par tojiji dans le forum Access
    Réponses: 4
    Dernier message: 10/07/2006, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo