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 :

une erreur que je n'arrive pas à corriger


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 55
    Par défaut une erreur que je n'arrive pas à corriger
    Bonjour à tous,


    J'ai la macro suivante :

    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
    Sub Formatage_GTIE()
    
    'Déclaratio des variables
    Dim DernLigne, i, nCol, nRow As Long
    Dim sNom As String
    Dim wb As Workbook
    
    Set wb = Workbooks("Reporting.xlsm")
    
    DernLigne = wb.Sheets("COMBI_GTIE").Range("A" & Rows.Count).End(xlUp).Row
    
    For i = 2 To DernLigne
        wb.Sheets("COMBI_GTIE").Activate
        Range("A" & i).Select
        Range(Selection, Selection.End(xlToRight)).Select
        sNom = Range("A" & i).Value
        nCol = Range("A1").Column
        nRow = Range("A1").Row + 1
       
        ActiveWorkbook.Names.Add Name:=(Replace(sNom, " ", "_")), RefersToR1C1:= _
        "=COMBI_SGT!R[" & nRow & "]C[" & nCol & "]:R[" & DernLigne & "]C[" & nRow & "]"
        ActiveWorkbook.Names(Replace(sNom, " ", "_")).Comment = ""
        sNom = ""
    
    Next i
    
    End Sub
    Le but de la macro est définir des noms pour des plages successivement sélectionnées.
    A la base j'ai fait un enregistrement de macro que j'ai réarranger à ma manière.
    Ma macro bloque au niveau de la ligne de code en rouge. Le message d'erreur me dit qu'il a une erreur d'exécution 1004 (erreur dans la formule) et
    je sais pas du tout comment corriger. Je ne vois pas où se trouve l'erreur d'ailleurs.

    Quelqu'un pourrait il m'aider ?

    Merci par avance,

  2. #2
    Membre confirmé
    Homme Profil pro
    Gestion comptable - Spécialiste Excel, Vba, - Débutant MySql, Javascript, Python, Php
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Gestion comptable - Spécialiste Excel, Vba, - Débutant MySql, Javascript, Python, Php

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Par défaut
    Bonjour,

    Ecrire des formules Excel dans VBA n'est pas toujours simple. Je ne sais pas si c'est toujours le cas, mais il me semble que les formules doivent être en anglais. L'IDE VBA est toujours au format ASCII et en anglais.

    Voici un exemple d'une formule que j'ai utilisée récemment:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "=DATE(20&RIGHT(RC[-1],2),LEFT(RC[-1],2),DAY(1))"
    "20" représente les deux premiers chiffres de l'années et bien que ce soit du texte, il ne doit pas y avoir des guillemets...

    Je ne sais pas si mon exemple sera utile mais c'est ce qui ressemble à votre formule dans votre macro

    "=COMBI_SGT!R[" & nRow & "]C[" & nCol & "]:R[" & DernLigne & "]C[" & nRow & "]"
    Pour les Lignes et les colonnes, pour ça je suis sûre qu'il faut utilisez la notation R pour Row et C pour Column, peut-être que c'est plus simple que d'utiliser des variables pour des adresses de cellules.

    Cordialement

    Pascal

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut
    Bonjour,

    à priori la ligne en rouge ne sert à rien, elle peut être supprimé, sauf si tu souhaites mettre un commentaire dans le nom de la plage. Et ActiveWorkbook peut être remplacé par wb.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    wb.Sheets("COMBI_GTIE").Activate
        Range("A" & i).Select
        Range(Selection, Selection.End(xlToRight)).Select
    à quoi servent ces lignes ? Cette selection n'a pas l'air d'être utilisée par ailleurs. En plus dans une boucle c'est lourd.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     nCol = Range("A1").Column 
     nRow = Range("A1").Row + 1
    Sur ces lignes je pense qu'il y a une erreur, sinon autant remplacer nCol par 1 et nRow par 2.

    Enfin dernière chose, les paramètres sont pris sur la feuille "COMBI_GTIE" et la plage définie sur "COMBI_SGT", est-ce normal ?

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 55
    Par défaut
    Bonjour bPascal123 et letienne,

    Merci pour vos retours. ils m'ont bien aidé.
    alors "COMBI_SGT" était bien une erreur, je voulais écrire "COMBI_GTIE"

    J'ai fait évoluer le code comme ceci :

    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
    Option Explicit
    Sub Formatage_GTIE()
     
    'Déclaratio des variables
    Dim DernLigne, DernCol, i, nCol, nRow As Long
    Dim sNom As String
    Dim wb As Workbook
     
    Set wb = Workbooks("Reporting.xlsm")
     
    DernLigne = wb.Sheets("COMBI_GTIE").Range("A" & Rows.Count).End(xlUp).Row
     
    For i = 2 To DernLigne
        wb.Sheets("COMBI_GTIE").Activate
        Range("B" & i).Select
     
        Range(Selection, Selection.End(xlToRight)).Select
        nCol = Selection.Columns.Count + 1
     
        sNom = Range("A" & i).Value
     
        wb.Names.Add Name:=(Replace("P_" & sNom, " ", "_")), RefersToR1C1:= _
        "=COMBI_GTIE!R" & i & "C" & 2 & ":R" & i & "C" & nCol & ""
        sNom = ""
     
    Next i
     
    End Sub
    Et il fonctionne maintenant.
    J'utilise nCol et nRow parce que je voulais faire bouger la plage à sélectionner ...

    le bout de code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range(Selection, Selection.End(xlToRight)).Select
        nCol = Selection.Columns.Count + 1
    devait me servir à récupérer le numero de la derniere colonne non vide de la plage, je ne l'avais effectivement pas bien utilisé.

    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    wb.Sheets("COMBI_GTIE").Activate
        Range("B" & i).Select
    parce que quand je fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wb.Sheets("COMBI_GTIE").Range("B" & i).Select
    j'ai une erreur

    je marque résolue
    merci encore

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Pourquoi tu veux sélectionner les cellules Bi?

    Tu n'as pas besoin

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu..
    Bonsoir
    pourrais tu m'expliquer a quoi sert ta sélection ?????????????
    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
    Sub Formatage_GTIE()
    
    'Déclaratio des variables
    Dim DernLigne, i, nCol, nRow As Long
    Dim sNom As String
    Dim wb As Workbook
    
    Set wb = Workbooks("Reporting.xlsm")
    
    DernLigne = wb.Sheets("COMBI_GTIE").Range("A" & Rows.Count).End(xlUp).Row
    
    For i = 2 To DernLigne
        wb.Sheets("COMBI_GTIE").Activate
        Range("A" & i).Select ici et en dessous 
        Range(Selection, Selection.End(xlToRight)).Select
        sNom = Range("A" & i).Value
        nCol = Range("A1").Column' ici a quoi te sert de déterminer par le range puisque visiblement c'est en dur A1.column fera toujours 1!!!!!!!
        nRow = Range("A1").Row + 1
       
        ActiveWorkbook.Names.Add Name:=(Replace(sNom, " ", "_")), RefersToR1C1:= _
        "=COMBI_SGT!R[" & nRow & "]C[" & nCol & "]:R[" & DernLigne & "]C[" & nRow & "]"
        ActiveWorkbook.Names(Replace(sNom, " ", "_")).Comment = ""
        sNom = ""
    
    Next i
    
    End Sub
    et puis pourquoi sélectionner dans une boucle


    je te soupçonne de t'être emmêler les pinceaux

    c'est tellement bizarre que j'en arrive a me demander ce que tu veux faire vraiment ???????car ca n'a ni queue ni tète
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Erreurs dans mes tables que je n'arrive pas à corriger
    Par simondu43 dans le forum Débuter
    Réponses: 2
    Dernier message: 18/05/2009, 22h03
  2. Erreur dans mon programme que je n'arrive pas à corriger
    Par alex7443 dans le forum Débuter
    Réponses: 3
    Dernier message: 25/03/2009, 14h46
  3. Erreur que je n'arrive pas à corriger
    Par parano dans le forum C
    Réponses: 6
    Dernier message: 14/01/2007, 14h00
  4. [PostGreSQL] une erreur que je ne comprends pas
    Par flo78 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/02/2006, 10h18
  5. Une requête que je n'arrive pas à faire
    Par Denti-fritz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/12/2005, 13h53

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