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 :

Equivalent #include pour charger les macros au démarrage


Sujet :

Macros et VBA Excel

  1. #21
    Invité
    Invité(e)
    Par défaut
    dans ton code y pas grand chose a faire:
    des This. devant les Worksheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim xlUp
    xlUp=-4162 
    MAX = This.Worksheets("Journal").Range("F65536").End(xlUp).Row
    This.Application.ScreenUpdating = False
    This.ActiveCell.Value
    l'objet This fait référence à ton classeur. tu as accès à ton classeur et par extension à tout Excel

    les constante Excel ne sont pas reconnues vas dans la fenêtre d'exécution et écris:
    ?xlUp et [ENTER] pour lire la valeur de la constante.

    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
    Sub next_ref()
    Start = 9
    FEUILLE = "Journal"
    FIN = "F65536"
    xlUp = -4162
    Max = This.Worksheets(FEUILLE).Range(FIN).End(xlUp).Row
    REF = 0
    This.Application.ScreenUpdating = False
    For i = Start + 1 To Max
        v = This.Worksheets(FEUILLE).Cells(i, 2)
        If (v > REF) Then
           REF = v
        End If
    Next
    This.application.ActiveCell = REF + 1
    This.Application.ScreenUpdating = True
    End Sub
    Dernière modification par Invité ; 23/10/2013 à 13h14.

  2. #22
    Membre confirmé Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Par défaut
    Avec le code suivant :
    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
    Sub next_ref()
    dim xlUp
    xlUp=-4162
    MAX = This.Worksheets("Journal").Range("F65536").End(xlUp).Row
    START = 9
    REF = 0
    This.Application.ScreenUpdating = False
    For i = START + 1 To MAX
        v = This.Worksheets("Journal").Cells(i, 2)
        If (v > REF) Then
            REF = v
        End If
    Next i
    This.ActiveCell.Value = REF + 1
    This.Application.ScreenUpdating = True
    End Sub
    J'ai l'erreur "1025 : fin d'instruction attendue"

    Si je mets en commentaire certaines instructions :
    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
    Sub next_ref()
    dim xlUp
    xlUp=-4162
    MAX = This.Worksheets("Journal").Range("F65536").End(xlUp).Row
    START = 9
    REF = 0
    This.Application.ScreenUpdating = False
    'For i = START + 1 To MAX
    '    v = This.Worksheets("Journal").Cells(i, 2)
    '    If (v > REF) Then
    '        REF = v
    '    End If
    'Next i
    This.ActiveCell.Value = REF + 1
    This.Application.ScreenUpdating = True
    End Sub
    j'ai l'erreur "438 : cet objet ne gère pas cette propriété ou cette méthode : 'This.ActiveCell'"

    et si je mets l'instrcuction "This.ActiveCell.Value = REF + 1" en commentaire, alors plus d'erreur mais pas de résultat ...

  3. #23
    Invité
    Invité(e)
    Par défaut ça ça marche
    pas facile de retranscrire de mémoire.
    de plus sur des sujets un peut pointu comme ça j'aime bien laisser cogiter ça rentre mieux.
    même pour du VBA sa forge l'expérience.
    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
    Sub next_ref()
    Start = 9
    FEUILLE = "Journal"
    FIN = "F65536"
    xlUp = -4162
    Max = This.Worksheets(FEUILLE).Range(FIN).End(xlUp).Row
    REF = 0
    This.Application.ScreenUpdating = False
    For i = Start + 1 To Max
        v = This.Worksheets(FEUILLE).Cells(i, 2)
        If (v > REF) Then
           REF = v
        End If
    Next
    This.application.ActiveCell = REF + 1
    This.Application.ScreenUpdating = True
    End Sub

  4. #24
    Membre confirmé Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Par défaut
    SUPER ça fonctionne

    Petite question pour comprendre : si je met les valeurs en dur dans l'instruction "Max = This.Worksheets("Journal").Range("F65536").End(xlUp).Row" ça plante

    Quelle est la cause ?

  5. #25
    Invité
    Invité(e)
    Par défaut
    difficile a dire car on a pas de visibilité sur le code.
    moi je mets en commentaire les instruction ['] puis je retire le commentaire au fur et a mesure.
    tu peux ajouter pour le débogage des MsgBox pour tester des valeurs.
    sil le xlUp n'est pas déclaré ça plante c'est une constante Excel: xlUp = -4162

    on est en VbScript c'est du Vb mais pas vraiment plus rigide.

  6. #26
    Membre confirmé Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Par défaut
    Le pb venait d'une faute de frappe

    Un grand merci pour ton aide

  7. #27
    Membre confirmé Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Par défaut
    J'ai une dernière question : mon code est réparti sur une trentaine de macros appelées chacune depuis un bouton.

    Comment faire pour, depuis chaque bouton, appeler la même macro en lui passant en paramètre le nom du code à charger-exécuter, comme par exemple "charger next_ref" où charger() est la macro qui reçoit en paramètre le nom "next_ref" pour charger le code correspondant et l'exécuter.

    Ainsi mon code embarqué dans la feuille se réduirait à ces deux seules macros, tout le reste étant en externe.

    Merci d'avance

  8. #28
    Invité
    Invité(e)
    Par défaut
    dans un module séparé, tu déclare:
    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
    Private Sub Workbook_Open()
    Dim FileNumber As Long, txt As String, F As String
    FileNumber = FreeFile
    F = ""
    Open ThisWorkbook.Path & "\next_ref.txt" For Input As #FileNumber
    Do While Not EOF(1)
        Line Input #FileNumber, txt
        F = F & txt & vbCrLf
    Loop
    Close #FileNumber
    Set sc = CreateObject("ScriptControl")
       sc.Language = "VBScript"
       sc.AddObject "This", ThisWorkbook, True
       Set M = sc.Modules.Add("ModuleRD")
       M.AddCode F
    End Sub
    dans chaque contrôle sur l’événement Click()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton1_Click()
    M.Run "Test1"
    End Sub
     
    Private Sub CommandButton2_Click()
    M.Run "Test2"
    End Sub
     
    Private Sub CommandButton3_Click()
    M.Run "Test3"
    End Sub

  9. #29
    Membre confirmé Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Par défaut
    YES SUPER MERCI

  10. #30
    Membre confirmé Avatar de popi33370
    Homme Profil pro
    retraité
    Inscrit en
    Octobre 2013
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : retraité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 89
    Par défaut
    Avec mon code dans un fichier externe, j'ai plein d'erreurs avec des fonctions qu'il ne reconnait pas, comme par exemple Dir() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PDFnext = Dir(REPERTOIRE & "*.pdf")
    et il n'est pas possible de faire des déclarations Dim = cela veut-il dire que malgré tout il saura traiter les tableaux avec le bon format selon les données qu'on y mettra ?

    Tout cela est nouveau pour moi et j'avoue avoir besoin d'infos.
    Peut-être y a-t-il quelque part un tutoriel simple qui explique tout cela ?

    merci d'avance

  11. #31
    Invité
    Invité(e)
    Par défaut Bonjour,
    si il traite les dim pas les type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim Mytxt ' le as string est a proscrire.
    dim MyTableau()
    dim i
    redim preserve Tableau(5)
    for i= 0 to ubound(Tableau)
    a= trim("" & Tableau(i)) 'Converti en string
    next
    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
    Dim t
    t = dir("c:\")
    For i = 0 To UBound(t)
     
    If instr(1,UCase(Trim("" & t(i))) , UCase(".bat"))<>0 Then
    MsgBox t(i)
    End If
    Next
     
    Function dir(Rep)
     
    Dim t()
    Dim i
    i = 0
    Set Fso = CreateObject("Scripting.FileSystemObject")
    For Each f In Fso.GetFolder(Rep).Files
    ReDim Preserve t(i)
      t(i) = f.Name
      i = i + 1
    Next
    set Fso=Nothing
    dir = t
    End Function
    Dernière modification par Invité ; 24/10/2013 à 16h26.

Discussions similaires

  1. Code qui permet de garder BO ouvert pour toutes les macros
    Par Alexandra0907 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 21/05/2008, 12h56
  2. [Installation] Problème pour charger les modules
    Par PierrotY dans le forum Apache
    Réponses: 2
    Dernier message: 19/07/2006, 10h09
  3. Equivalent de (*) pour les champs date et num
    Par pursang25 dans le forum Access
    Réponses: 3
    Dernier message: 11/07/2006, 21h39
  4. Aide sur les macros Excel pour recopie auto de données
    Par nicoduhavre dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/11/2005, 08h38
  5. [débutant] equivalent à sprintf pour les std::string
    Par Biosox dans le forum SL & STL
    Réponses: 22
    Dernier message: 26/08/2005, 12h46

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