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

  1. #1
    Candidat au Club
    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
    Points : 3
    Points
    3
    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
    12 927
    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 : 12 927
    Points : 28 920
    Points
    28 920
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Que contient la variable nouveauTexte et la variable tableau enregistrement juste avant cette erreur ?

  3. #3
    Candidat au Club
    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
    Points : 3
    Points
    3
    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
    12 927
    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 : 12 927
    Points : 28 920
    Points
    28 920
    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

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 339
    Points : 1 955
    Points
    1 955
    Par défaut
    Hello,

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

  6. #6
    Candidat au Club
    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
    Points : 3
    Points
    3
    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 ?

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

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

  8. #8
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 031
    Points : 9 429
    Points
    9 429
    Par défaut
    Hello,
    JAM97 dans ton code ligne 26 tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Debug.Print Now, ligne, enregistrements
    Normalement dans la fenêtre d'exécution du VBA , il doit y avoir quelque chose qui s'affiche. Montre nous ce qui s'affiche.

    Ami calmant, J.P

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 927
    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 : 12 927
    Points : 28 920
    Points
    28 920
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Normalement dans la fenêtre d'exécution du VBA , il doit y avoir quelque chose qui s'affiche. Montre nous ce qui s'affiche
    Comme vous êtes novice, la fenêtre d'exécution s'active à l'aide du raccourci clavier Ctrl + G ou sélectionner le menu Affichage et cliquer sur Fenêtre d'exécution

  10. #10
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Comme vous êtes novice, la fenêtre d'exécution s'active à l'aide du raccourci clavier Ctrl + G ou sélectionner le menu Affichage et cliquer sur Fenêtre d'exécution
    Bonjour

    Merci pour vos retours j'ai appris un nouvelle fonction.

    Dans la fenêtre d'exécution, c'est la dernière information du tableau avec mes données que je lui demande de fusionné dans ma zone de texte qu'il ne prends pas en compte.
    Message d'erreur : Erreur d'exécution '9': L'indice n'appartient pas à la sélection.

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 927
    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 : 12 927
    Points : 28 920
    Points
    28 920
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour que nous puissions vous aider.
    1. Il faut la publication du code
    2. le numéro de la ligne où a lieu l'erreur
    3. le numéro et le texte de l'erreur

  12. #12
    Membre éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 403
    Points : 706
    Points
    706
    Par défaut
    Bonjour Jam97,
    Je pense que, comme vous êtes novice il va falloir y aller petit à petit. Donc dans l'ordre suivre les étapes suivantes
    Dans l'environnement VBE :
    • Afficher la fenêtre des variables locales Menu ==> Affichages ==> Fenêtre Variables locales
    • Afficher la fenêtre d'exécution Menu ==> Affichages ==> Fenêtre Exécution ou bien CTRL+G
    • Cliquer sur la ligne 26 : Debug.Print Now, ligne, enregistrements
    • Placer un point d'arrêt sur cette ligne (Clic sur le bord gauche de la fenêtre) ou bien touche F9
    • Lancer la procédure
    • Le programme va stopper sur la ligne
    • Regarder dans la fenêtre des variables ce que contient enregistrements

    Si la variable contient un double Pipe cela peut poser des problèmes (une cellule qui était vide par exemple)

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 927
    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 : 12 927
    Points : 28 920
    Points
    28 920
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour compléter la réponse de Jean-Paul ,que je salue au passage, et pour en savoir plus sur le débogage, je vous conseille la lecture du tutoriel Le débogage sous Visual Basic 6 et Visual Basic pour Application(1re partie)

  14. #14
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Bonjour Jam97,
    Je pense que, comme vous êtes novice il va falloir y aller petit à petit. Donc dans l'ordre suivre les étapes suivantes
    Dans l'environnement VBE :
    • Afficher la fenêtre des variables locales Menu ==> Affichages ==> Fenêtre Variables locales
    • Afficher la fenêtre d'exécution Menu ==> Affichages ==> Fenêtre Exécution ou bien CTRL+G
    • Cliquer sur la ligne 26 : Debug.Print Now, ligne, enregistrements
    • Placer un point d'arrêt sur cette ligne (Clic sur le bord gauche de la fenêtre) ou bien touche F9
    • Lancer la procédure
    • Le programme va stopper sur la ligne
    • Regarder dans la fenêtre des variables ce que contient enregistrements

    Si la variable contient un double Pipe cela peut poser des problèmes (une cellule qui était vide par exemple)

    Merci pour ton aide j'ai appris une nouvelles fonctions.

    Il essaie de me copier une colonne que j'ai rien dedans et pas de titre sur la ligne 6 de mon tableau
    Je ne comprends pas pourquoi

    Merci pour votre aide

  15. #15
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Pour compléter la réponse de Jean-Paul ,que je salue au passage, et pour en savoir plus sur le débogage, je vous conseille la lecture du tutoriel Le débogage sous Visual Basic 6 et Visual Basic pour Application(1re partie)
    Merci ça a répondu à une autre question.
    Mais je vais transférer mon fichier au pire car je suis perdu là

  16. #16
    Membre éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 403
    Points : 706
    Points
    706
    Par défaut
    Bonsoir,
    Il essaie de me copier une colonne que j'ai rien dedans et pas de titre sur la ligne 6 de mon tableau
    Je ne comprends pas pourquoi
    J'avoue ne pas comprendre, une capture d'écran et une explication plus claire serait les bienvenues.

  17. #17
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    [QUOTE=Valtrase;12021528]Bonsoir,


    J'avoue ne pas comprendre, une capture d'écran et une explication plus claire serait les bienvenues.[/QUOTE

    Le tableau contient des donnés que j'arrive pas modifié.

    Blocage 1.docxBlocage 1.docxBlocage 1.docxBlocage 1.docx

    Pardon je suis perdu dans le forum. J'ai joint une copie d'écran

  18. #18
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut Relance vba
    [QUOTE=Jam97;12021534]
    Citation Envoyé par Valtrase Voir le message
    Bonsoir,


    J'avoue ne pas comprendre, une capture d'écran et une explication plus claire serait les bienvenues.[/QUOTE

    Le tableau contient des donnés que j'arrive pas modifié.

    Blocage 1.docxBlocage 1.docxBlocage 1.docxBlocage 1.docx

    Pardon je suis perdu dans le forum. J'ai joint une copie d'écran
    Bonjour à tous,

    Je me permet de relancer ma discussion, si vous des solutions je suis preneuse

    Merci à vous tous

  19. #19
    Membre éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 403
    Points : 706
    Points
    706
    Par défaut
    Bonjour,
    Dans la capture d'écran nous ne voyons pas la fenêtre d'exécution.

    Petite explication sur la fonction Split :
    En considérant ce texte : "Expression 1;Expression 2"
    Regarder ce qui se passe selon l'indice demandé :
    Nom : 000549.png
Affichages : 87
Taille : 22,9 Ko

    Tout cela pour dire que dans la chaine enregistrement, il ne trouve pas le point-virgule donc il renvoie la chaine complète, donc l'indice 1 n’existe pas, d'où l'erreur.

  20. #20
    Candidat au Club
    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
    Points : 3
    Points
    3
    Par défaut
    Ok merci je vais regarder. J'avais pourtant vérifier ce point

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