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 :

Publipostage excel vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 20
    Par défaut Publipostage excel vba
    Bonjour,

    J'ai repris ce code vba sur un site mais je ne comprends pas pourquoi il bloque a la ligne rouge 'Erreur d'exécution'9': L'indice n'appartient pas à la sélection.

    Avez-vous une solution svp ?


    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
    53
    54
    55
    56
    57
    58
    Sub publipostage()
    
        Application.ScreenUpdating = False
    
        Dim classeurOrigine As String, classeurPublipostage As String
        classeurOrigine = ActiveWorkbook.Name
        
        Workbooks.Add
        classeurPublipostage = ActiveWorkbook.Name
        [A1] = "Publipostage automatique réalisé le " & Format(Now, "dd/mm/yyyy hh:mm")
        
        Windows(classeurOrigine).Activate
        
        Dim table As Range
        Set table = [a8].CurrentRegion
        
        Dim ligne As Integer, colonne As Integer
        For ligne = 2 To table.Rows.Count
            Dim enregistrements As String, email As String
            enregistrements = ""
            
            For colonne = 1 To table.Columns.Count
                enregistrements = enregistrements & table(1, colonne) & ";" & table(ligne, colonne) & "!"
            Next
            
            Debug.Print Now, ligne, enregistrements
        
            ActiveSheet.Shapes(1).Copy
            Application.Wait (Now + TimeValue("00:00:01"))
            
            Windows(classeurPublipostage).Activate
            Sheets.Add After:=ActiveSheet
            
            ActiveSheet.Paste
            Application.CutCopyMode = False
            
            Dim enregistrement As Variant, nouveauTexte As String
            For Each enregistrement In Split(enregistrements, "!")
                If enregistrement <> "" Then
                      
                    nouveauTexte = ActiveSheet.Shapes(1).TextFrame.Characters.Text
                    nouveauTexte = Replace(nouveauTexte, "[" & Split(enregistrement, ";")(0) & "]", Split(enregistrement, ";")(1), 1)
                    ActiveSheet.Shapes(1).TextFrame.Characters.Text = nouveauTexte
                    
                    If Split(enregistrement, ";")(0) = "Mail" Then
                        email = Split(enregistrement, ";")(1)
                    End If
                End If
            Next
            
            creerMail email, nouveauTexte
        
            Windows(classeurOrigine).Activate
        Next
        
        Application.ScreenUpdating = True
        
    End Sub

  2. #2
    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 166
    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 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Que contient la variable nouveauTexte et la variable tableau enregistrement juste avant cette erreur ?
    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

  3. #3
    Membre averti
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 20
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Que contient la variable nouveauTexte et la variable tableau enregistrement juste avant cette erreur ?
    Bonjour,

    Je suis pas certaine de comprendre ta question.

    le nouveau texte est normalement la fusion des données de mon tableau avec le texte d'origine.

  4. #4
    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 166
    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 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je me suis mal exprimé.
    Dans la ligne 45 du code publié. La fonction Split crée une table mais ici elle est évaluée immédiatement par Split(enregistrement, ";")(0) donc il faudrait connaître la valeur de l'indice 0 et 1 (ligne 46)
    Et quelle est la valeur de la variable nouveauTexte
    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

  5. #5
    Membre averti
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 20
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Je me suis mal exprimé.
    Dans la ligne 45 du code publié. La fonction Split crée une table mais ici elle est évaluée immédiatement par Split(enregistrement, ";")(0) donc il faudrait connaître la valeur de l'indice 0 et 1 (ligne 46)
    Et quelle est la valeur de la variable nouveauTexte
    Je suis très novice, je ne comprends pas ta question. La valeur de l'indice O c'est à dire à quelle cellule elle fait référence dans mon tableau d'origine ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Reformulé plus simplement:
    Que vaut la variable enregistrement au moment où ca plante ?

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Hello,

    Savoir coder, c'est bien,
    mais savoir debugger c'est mieux:
    https://darkvader.developpez.com/tut...isual-basic-6/

Discussions similaires

  1. [XL-2013] Sélection onglet publipostage Excel VBA vers Word
    Par PierreRM dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/06/2016, 19h03
  2. [XL-2010] Contrôle DataSource sous VBA pour Publipostage Excel - Word
    Par zielite dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/09/2014, 17h43
  3. [XL-2010] Contrôle DataSource sous VBA pour Publipostage Excel - Word
    Par zielite dans le forum Excel
    Réponses: 1
    Dernier message: 22/09/2014, 17h41
  4. Réponses: 50
    Dernier message: 12/06/2014, 14h48
  5. [WD-2007] Connection à une base excel pour Publipostage : Macro VBA
    Par astroflo dans le forum VBA Word
    Réponses: 2
    Dernier message: 10/02/2012, 09h14

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