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 :

Mise à jour tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Par défaut Mise à jour tableau
    Bonjour tout le monde,

    Je reviens encore vers vous car j'ai une macro qui fonctionne à moitié et je sais pas ce qui ne marche pas.

    Explication du fonctionnement de la macro ci dessous :
    1- je teste si une cellule est vide :
    dans mes onglets (2 à 19)
    les lignes (1 à 9)
    des colonnes (2 à max)
    2- si la cellule est vide, j'envoie un message d'erreur indiquant les onglets (lignes et colonnes) ou la cellule est vide.

    PROBLEME: ma macro me renvoie bien un message d'erreur de la 1er ligne de ma 2 eme colonne, alors que cette derniere n'est pas vide.


    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
     
    Option Explicit
    Public Wk As Workbook
     
    Sub Maj_BANDEAU()
        Dim i As Long
        Dim j As Long
        Dim l As Long 'feuille
     
        Dim lMaxCol As Long
        Dim lTrouveLigne As Long
     
        Application.ScreenUpdating = False
        lMaxCol = 0
        lMaxCol = Wk.Sheets(2).Cells(1, Sheets(2).Cells.Columns.Count).End(xlToLeft).column
     
        'Recuperation du classeur courant
        Set Wk = ActiveWorkbook
        If Wk Is Nothing Then Exit Sub
     
            For l = 2 To 19 'boucle de la feuille 2 à la feuille 19
                lTrouveLigne = 0
                 For i = 1 To 9 'boucle sur les lignes de mon bandeau : ligne 1 à 9
                    For j = 2 To lMaxCol 'boucle sur les colonnes de mon bandeau : colonne 2 à max
                        If Wk.Sheets(l).Cells(i, j) = "" Then  'tester si les cellules sont vides
                            lTrouveLigne = 1
                            Exit For
                        ElseIf lTrouveLigne = 0 Then 'si c'est vide envoyer un message d'erreur et arreter la macro
                            Application.StatusBar = .Sheets(l).Name
                            MsgBox "Problème de valeur sur les onglets ligne " & i & " Colonne " & j
                            'MsgBox "Des blancs dans les feuilles !" + CurrentWk.Sheets(l).Cells(i, j), vbCritical
                            Exit Sub
                        End If
                    Next j
                Next i
            Next l
     
        Application.ScreenUpdating = True
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    tu n'indiques pas dans ton code sur quelle feuille tu te trouves, vérifies si tu n'as pas déjà changé de feuille par rapport à celle que tu évoques
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Par défaut
    Bonjour,

    Merci pour ta reponse,

    Comment j'indique la feuille sur laquelle je travaille?

    Ce code ne le fait pas (etant donné que je boucle de la feuille 2 à la feuille 19 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if Wk.Sheets(l).Cells(i, j) = ""

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    En fait je serai passé par un espion ou un point d'arrêt, pour s'assurer que lorsque tu passes dans le bloc "erreur", tu sais quelles sont les valeurs exactes de tes variables et tu sais la valeur exacte lue par le code dans ta cellule

    Tu saisis l'idée ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 65
    Par défaut
    Si j'ai bien saisi,

    je met un point d'arreter lors du premier test mais je me rend compte qu'il change de feuille mais ne teste que les lignes de la colonne 2.

    En fait il ne recupere que la cellule de la deuxieme colonne et premiere ligne (alors que cette derniere n'est meme pas vide et que j'ai des vides dans d'autres cellules ).

    Je dois avoir un probleme sur ma boucle mais je sais pas ou?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    tu initialises ton j à 2
    c'est bien pour ça qu'il ne va pas regarder la colonne 1
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    que t'affiche le code suivant
    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
     
    Option Explicit
    Public Wk As Workbook
     
    Sub Maj_BANDEAU()
        Dim i As Long
        Dim j As Long
        Dim l As Long 'feuille
     
        Dim lMaxCol As Long
        Dim lTrouveLigne As Long
     
        Application.ScreenUpdating = False
        lMaxCol = 0
        lMaxCol = Wk.Sheets(2).Cells(1, Sheets(2).Cells.Columns.Count).End(xlToLeft).column
     
        'Recuperation du classeur courant
        Set Wk = ActiveWorkbook
        If Wk Is Nothing Then Exit Sub
     
            For l = 2 To 19 'boucle de la feuille 2 à la feuille 19
                lTrouveLigne = 0
                 For i = 1 To 9 'boucle sur les lignes de mon bandeau : ligne 1 à 9
                    For j = 2 To lMaxCol 'boucle sur les colonnes de mon bandeau : colonne 2 à max
                        If Wk.Sheets(l).Cells(i, j) = "" Then  'tester si les cellules sont vides
                            lTrouveLigne = 1
                            Exit For
                        ElseIf lTrouveLigne = 0 Then 'si c'est vide envoyer un message d'erreur et arreter la macro
                            Application.StatusBar = .Sheets(l).Name
                            MsgBox "Problème de valeur sur les onglets ligne " & i & " Colonne " & j &  " de ma page " &  Wk.Sheets(l).Name
                            'MsgBox "Des blancs dans les feuilles !" + CurrentWk.Sheets(l).Cells(i, j), vbCritical
                            Exit Sub
                        End If
                    Next j
                Next i
            Next l
     
        Application.ScreenUpdating = True
    End Sub
    [/QUOTE]
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Mise à jour Tableau croisé dynamique chaque mois
    Par duduz dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/07/2014, 20h52
  2. Execution sur mise à jour tableau croisé dynamique
    Par timmy1 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/09/2011, 16h32
  3. Mise à jour tableau excel sous word
    Par christophe.rousset dans le forum Word
    Réponses: 1
    Dernier message: 13/04/2010, 13h52
  4. mise à jour tableau croisé dynamique
    Par pancratee dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/03/2010, 16h35
  5. [mise à jour tableau en fonction du button radio]
    Par Lady_jade dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/12/2005, 11h41

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