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 :

Subscript Error incompréhensible


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 9
    Points
    9
    Par défaut Subscript Error incompréhensible
    Bonjour à tous,
    voilà mon problèpme :
    je suis en train de m'arracher les cheveux et je tiens à les garder

    Plus sérieusement : j'ai une erreur subscript outof range lors de ma commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbvar = Application.CountA(Workbooks(justname).Sheets(pipesheetsname).Range("b:b")) - 1
    Ceci m'a fait penser à une erreur dans le nom utilisé pour le workbook ou la feuille.
    J'ai du coup fait un code qui evite ce genre de pépin et rien de neuf... ça marche pas...
    Donc c'est assez obscure pour moi car je vois pas le problème de mon code, peut etre que quelqu'un y verra plus clair.

    en gros ma macro est toute bête
    dans mon fichier A j'ai un bouton
    il m'envoie à un fenêtre pour choisir mon fichier B qui contient les noms de mes modèles
    je copie la ligne 3 (les noms) de mon fichier B dans la colonne "BA" de mon fichier A
    je fais une validation dans une cellule de mon fichier A avec la collone BA
    ou je pourrais du coup choisir un modèle parmi ceux que j'avais crée dans le fihcier B

    suis -je clair ? non ? c pas surprenant je suis un grand incompris
    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
     
    Sub open_mypipefile()
    Dim pipesheetsname, justname, pathfile, myworkbook, mypath As String
    Dim i, nbvar As Integer, stfile As Variant
    Dim test1, test2, temp As String
    '
    ThisWorkbook.Activate
    myworkbook = ThisWorkbook.Name
    mypath = ThisWorkbook.Path
    pipesheetsname = "risers"
    stfile = Application.GetOpenFilename("Pipe generation file (*.xls),*.xls", 3, "Choose your file", 0, False)
    If stfile = False Then
    End
    End If
    Range("BA1:BA37").ClearContents
    Range("BA1").Value = stfile
    Range("ba1").Replace what:="*\", replacement:=""
    justname = Range("BA1").Value
    pathfile = Mid(stfile, 1, Len(stfile) - Len(justname))
    MsgBox pathfile & Chr(10) & mypath
    If pathfile <> mypath Then
    FileCopy stfile, mypath & "\" & justname
    End If
    ChDrive Mid(mypath, 1, 1)
    ChDir mypath
    nbvar = Application.CountA(Workbooks(justname).Sheets(pipesheetsname).Range("b:b")) - 1
    For i = 1 To nbvar
    temp = Workbooks(justname).Sheets(pipesheetsname).Cells(3, i + 1).Value
    Workbooks(myworkbook).Sheets("Model").Cells(i + 1, 53) = temp
    Next
    With Workbooks(myworkbook).Sheets("Model").Range("i10").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertInformation, _
            Operator:=xlBetween, Formula1:="=$BA$2:$BA$" & nbvar
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = "For your own information"
            .InputMessage = ""
            .ErrorMessage = _
            "Your pipe type may not be in your model" & Chr(10) & "This could make the batch to fail"
            .ShowInput = True
            .ShowError = True
        End With
    End Sub

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 9
    Points
    9
    Par défaut re
    pb réglé...

    un peu honte...

    si je vous dis que j'ai juste rajouté vous me croyez ?

    hiiiiiiiiiiiiiiii la star... hum hum

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par merenptah44 Voir le message
    pb réglé...
    vous me croyez ?
    Non !
    CountA est une fonction Excel et pour l'utiliser, tu dois utiliser "Application.WorksheetFunction.CountA..."
    A moins que la version 2007 d'Excel ne permette de s'en passer ET que tu aies cette version là
    A+ mais tiens-nous au courant

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Rien de bien fondamental au niveau du fonctionnement mais tu devrais faire attention à tes déclarations.
    Dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim pipesheetsname, justname, pathfile, myworkbook, mypath As String
    seul mypath sera déclaré String, les autres seront des Variant.
    La bonne syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim pipesheetsname As String, justname As String, pathfile As String, myworkbook As String, mypath As String
    Si ton problème est résolu, veux-tu bien cliquer sur le bouton du même nom, sous la discussion?

    Merci.

Discussions similaires

  1. Microsoft SQL Server error: 233
    Par agdid04 dans le forum Administration
    Réponses: 6
    Dernier message: 20/04/2013, 08h42
  2. [XL-2007] Error 9 : subscript out of range
    Par Me.Leti dans le forum Excel
    Réponses: 5
    Dernier message: 28/08/2012, 10h06
  3. Réponses: 2
    Dernier message: 15/08/2010, 16h20
  4. [debutant] Run-time error '9': Subscript out of range
    Par NikoBe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/12/2008, 08h26
  5. Réponses: 1
    Dernier message: 23/04/2008, 10h37

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