1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2017
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Remplacement d'une chaîne de caractère dans X feuilles d'un classeur Excel

    Bonjour,

    Le script ci-après doit permettre la modification d'une chaîne de caractère dans plusieurs feuilles d'un classeur Excel.
    En VBA, je n'ai eu aucun soucis, mais désirant automatiser l'action le dernier jour du mois sans ouverture du classeur "Matrice" je suis confronté à un message d'erreur sur la ligne 34 {message = Index non valide. (Exception de HRESULT : 0x8002000B (DISP_E_BADINDEX)) }

    Je vous sollicite pour une assistance dans l’écriture et surtout une explication sur mon erreur.

    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ' Déclaration des variables
    		Dim mois 'Mois à traiter
    		Dim annee 'Année à traiter
    		Dim mm_aa 'Conacténation Mois_Année
    		Dim fichierxls 'Nom du nouveau classeur mensuel
    		Dim fso 'Création de l'objet FileSystemObject
    		Dim fin 'Fin traitement
            Dim i 'Boucle feuilles classeur
            Dim appExcel 'Application Excel
            Dim wbExcel  'Classeur Excel
            Dim wsExcel  'Feuille Excel
            Dim xlPart
            Dim xlByRows
            ' Création classeur Excel mensuel
            fso = CreateObject("Scripting.FileSystemObject")
            mois = InputBox("Nous sommes le " & mois & " ème mois de l'année " & annee & (Chr(13) & Chr(10)) & "Merci de saisir le mois désiré sur 2 caractères ex: juin = 06", "Création classeur Statistique Mensuel")
            annee = InputBox("Nous sommes le " & mois & " ème mois de l'année " & annee & (Chr(13) & Chr(10)) & "Merci de saisir l'année désiré sur 4 caractères ex: 2017 = 2017", "Création classeur Statistique Mensuel")
            mm_aa = mois & "_" & annee
            fichierxls = "fichier-" & annee & mois & ".xlsx"
            fso.CopyFile("d:\fichier-matrice.xlsx", "d:\" & fichierxls, True)
            xlPart = Nothing
            xlByRows = Nothing
            Path = Nothing
            'Ouverture de l'application Excel
            appExcel = CreateObject("Excel.Application")
            'Ouverture du classeur Excel
            wbExcel = appExcel.Workbooks.Open("d:\" & fichierxls)
            appExcel.Visible = True   'les actions seront visibles. Pour tout lancer en arrière-plan, remplacer True par False
            'wsExcel correspond la feuille du classeur
            For i = 13 To 41
                wsExcel = wbExcel.Worksheets(i)
                'Remplacement date dans les Cellules des feuilles 13 à 41
                wsExcel.Cells.Replace(What:="05_17", Replacement:=mm_aa, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False)
    		Next
            'Enregistrement du classeur Excel
            wbExcel.Save()
            'Fermeture du classeur Excel
            wbExcel.Close()
            'Fermeture de l'application Excel
            appExcel.Quit()
            'Désallocation mémoire
            wsExcel = Nothing
            wbExcel = Nothing
            appExcel = Nothing
            ' Fin de Traitement
            fin = InputBox("Le traitement est terminé - saisissez OK puis retour chariot", "Création classeur Statistique Mensuel")
            MsgBox(fin)
        End Sub
    Merci par avance.

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    avril 2013
    Messages
    8 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 8 345
    Points : 16 512
    Points
    16 512

    Par défaut


    Bonjour,

    xlPart & xlByRows n'existant qu'en VBA Excel !

    Soit indiquer devant la variable objet l'application Excel,
    soit les remplacer par les valeurs de ces constantes facilement trouvables du côté de VBA Excel …

    ___________________________________________________________________________________________________________
    Je suis Paris, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    . . . . . Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2017
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Merci Marc-L,

    J'essaye en indiquant la variable application et vous tiens informé.

Discussions similaires

  1. Réponses: 11
    Dernier message: 15/07/2014, 09h52
  2. Réponses: 10
    Dernier message: 27/11/2013, 21h06
  3. Réponses: 0
    Dernier message: 19/01/2009, 10h00
  4. Remplacer une chaîne de caractère dans un gros fichier
    Par dosilbr dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/03/2007, 13h38
  5. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03

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