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 :

Problème de sélection dans un tableau dynamique (gestion des erreurs)


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème de sélection dans un tableau dynamique (gestion des erreurs)
    Bonjour,
    J'ai un problème que je n'arrive pas à résoudre sur un tableau dynamique : je veux sélectionner une ligne dans une combo de sélection du tableau dynamique, mais lorsque la valeur n'existe pas, je voudrais appliquer un traitement spécial.

    Voilà mon code actuel :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
                  ' on remplit le tableau du haut
                    i = 8
                    While ActiveSheet.Range("A" & i).Value <> "Total"
                        ' récupération du nom de la direction
                        nomDir = ActiveSheet.Range("A" & i).Value
     
                        If nomDirTraitee = nomDir Then
                            ActiveSheet.Range("A" & i & ":C" & i).Select
                            With Selection.Interior
                                .ColorIndex = 6
                                .Pattern = xlSolid
                            End With
                            Selection.Font.Bold = True
                        End If
     
                        Workbooks(2).Activate
                        ActiveWorkbook.Sheets(nomFeuille).Select
     
                        On Error GoTo -1: On Error GoTo finDir
                        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Branche Direction").CurrentPage = nomDir
     
                            cout = ActiveSheet.Range("H8").Value
     
                            ' on récupère le mois en cours (pas forcément dans la dernière colonne)
                            numCol = 14
                            While numCol >= 2
                                If ActiveSheet.Cells(12, numCol).Value <> "" Then
                                    nbPrest = ActiveSheet.Cells(12, numCol).Value
                                    numCol = 1
                                Else
                                    numCol = numCol - 1
                                End If
                            Wend
     
                            ' MAJ du tableau
                            Workbooks(3).Activate
                            ActiveWorkbook.Worksheets(Left(nomSociete, 31)).Select
     
                            If IsError(cout) Then
                                ActiveSheet.Rows(i).Delete
                            Else
                                ActiveSheet.Range("B" & i).Value = nbPrest
                                ActiveSheet.Range("C" & i).Value = cout
                                i = i + 1
                            End If
    finDir:
    Err.Number = 0
     
                    Wend

    La valeur que je sélectionne dans la combo de sélection du tableau dynamique peut ne pas exister : c'est ce cas qui me bloque, car quand elle n'existe pas, j'aimerais appliquer le code "ActiveSheet.Rows(i).Delete"
    j'ai utilisé le "onError GoTo" car je n'ai rien trouvé d'autre, mais s'il existe un moyen de tester l'existence d'une valeur dans la liste, je préfèrerais.

    Merci d'avance pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Voici une petite fonction qui pourrait peut-etre t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function valeurExiste(tcd As PivotTable, nomchamp As String, valeur As Variant)
        Dim pvi As PivotItem, bool As Boolean
        For Each pvi In tcd.PivotFields(nomchamp).PivotItems
            If pvi.Value = valeur Then
                bool = True
                Exit For
            End If
        Next pvi
        Set pvi = Nothing
        valeurExiste = bool
    End Function

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta fonction.
    En cherchant, j'ai utilisé la même fonction que toi, mais je ne comprends pas pourquoi, lorsque je liste les valeurs de ma liste déroulante, Excel m'en invente ^^ Il me sort des valeurs qui n'existent même pas dans mes données.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    pourrait-tu expliqué comment fonctionne la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    On Error GoTo -1: On Error GoTo finDir
    Je n'ai trouver aucun paramètre (-1) sur le On goto erreur -1

    et pourquoi 2 détections d'erreurs l'une derrière l'autre.
    NB: je suis encore en Excel 2000 et il est possible que je sois "Obsolète"
    A+

Discussions similaires

  1. [FPDF] problème avec les images dans un tableau dynamique
    Par GADSN dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 08/04/2009, 11h11
  2. Réponses: 2
    Dernier message: 19/03/2009, 13h02
  3. [MySQL] Problème d'affichage dans un tableau au niveau des accents
    Par Stu76 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 20/02/2008, 16h34
  4. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 12h00
  5. Problème d'écriture dans un tableau
    Par Hokagge dans le forum MFC
    Réponses: 46
    Dernier message: 08/07/2005, 16h47

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