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 lignes dans un tableau en VBA


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
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut Problème de lignes dans un tableau en VBA
    Bonjour le forum,

    j'ai un souci dans une macro qui génère un diaporama powerpoint depuis une feuille excel :
    le tableau dans le slide PPT contient :
    5 lignes dont :
    • 3 d'une seule cellule
    • 1 ligne avec 2 cellules
    • 1 ligne avec 3 cellules

    lorsque je lance la macro, elle met toujours le message d'erreur :
    "erreur d'exécution '-2147188160(80048240)' :
    Table.Cell : integer out of range. 4 is not in Row's valid range of 1 to 1"

    j'avoue ne pas saisir pourquoi il ne lit pas les différentes lignes du tableau
    voici le code :
    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
    50
    51
    52
    Sub PPT()
    Dim objPPT As Object
    Dim objPres As Object
    Dim objSld As Object
    Dim objShp As Object
    Dim Rg As Range
     
    'sélection de la zone de données à fusionner
    With Sheets("description-prod")
        Tablo = Range("A2:N" & Range("N65000").End(xlUp).Row).Value
    End With
     
    Set objPPT = CreateObject("Powerpoint.Application")
    objPPT.Visible = True
     
    Set objPres = objPPT.Presentations.Open(ThisWorkbook.Path & "\DEVIS-PPT1.pptx")
    objPres.SaveAs ThisWorkbook.Path & "\testdevis.pptx"
     
    'recherche de la dernière cell M
    With Worksheets("description-prod")
      Set Rg = .Range("M2:M" & Range("M65000").End(xlUp).Row)
    End With
     
    'si la cell M est différente de 0, alors fusion entre Excel et Ppt
     
      Do Until ActiveCell = ""
     
        If ActiveCell <> 0 Then
    For i = 1 To UBound(Tablo)
        Set objSld = objPres.Slides(1).Duplicate
        For Each objShp In objSld.Shapes
            If objShp.HasTable Then
                With objShp.Table
                    X = X + 1
                    .cell(1, 1).Shape.TextFrame.TextRange.Text = Tablo(X, 13)
                    .cell(4, 1).Shape.TextFrame.TextRange.Text = Tablo(X, 6)
                    .cell(4, 2).Shape.TextFrame.TextRange.Text = Tablo(X, 7)
                    .cell(5, 2).Shape.TextFrame.TextRange.Text = Tablo(X, 11)
                    .cell(5, 3).Shape.TextFrame.TextRange.Text = Tablo(X, 12)
                End With
            End If
        Next
    Next
    Else
    ActiveCell.Offset(1, 0).Range("A1").Select
    End If
    Loop
    objPres.Slides(1).Delete
    objPres.save
    objPres.Close
     
    End Sub
    une idée sur ce qui provoque le problème ?
    d'avance merci

  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,

    je comprends pas trop les syntaxes de certaines lignes :

    ActiveCell.Offset(1, 0).Range("A1").Select

    me parait un peu capillotracte

    Sinon, vois si les boucles ne vont pas de
    0 a UBound()-1
    au lieu de
    1 a UBound()
    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
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu n'es peut-être pas sur la bonne table dans ppt. Comme tu utilises un slide modèle, tu pourrais nommer les objets qui t'intéressent.

    Par ailleurs, j'ai remarqué :
    • des variables non déclarées :Tablo, X
    • une boucle For Next, compteur = i, mais i n'est pas utilisé dans la boucle
    Cordialement,

    PGZ

  4. #4
    Membre confirmé
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Par défaut
    bon j'ai du mal...
    voici la boucle que je veux faire :
    si M <> 0 alors création d'un slide depuis le modèle DEVIS-PPT1.pptx
    remplissage du tableau
    et tant que B = M
    alors ajoute les lignes 4 et 5 du tableau avec les infos de la ligne
    jusqu'à ce que M soit différent de B
    en fait dans la colonne M se trouve le titre du tableau
    ensuite les produits et quantité qui constituent le tableau
    ===
    je joins un fichier exemple, peut être pouvez vous m'aiguiller sur la meilleure façon de faire
    d'avance merci

Discussions similaires

  1. [VBA - W] ajout ligne dans un tableau
    Par perophron dans le forum VBA Word
    Réponses: 2
    Dernier message: 23/05/2007, 10h27
  2. Réponses: 1
    Dernier message: 24/04/2007, 17h20
  3. [VBA-E] connaitre le nombre de ligne dans un tableau excel
    Par bigbarbe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/04/2006, 10h03
  4. [VBA-E]insertion automatique d'une ligne dans un tableau
    Par janus82 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/04/2006, 15h42
  5. Problème saut de ligne dans un tableau
    Par talggir dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/11/2005, 15h10

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