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 :

Procedure qui se prend pour une fonction


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut Procedure qui se prend pour une fonction
    Bonjour,

    J'ai créé une procedure qui permet d'intervertir deux lignes.
    Seul souci c'est que ca ne compile pas...
    Voici ma procedure:
    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 SwitchLigne_P(ByVal L1 As Integer, ByVal L2 As Integer)  'Permer d'intervertire L1 et L2
    Dim L2_, L2_1, L1_, L1_2 As String
    L2_ = Trim(Str(L2)) & ":" & Trim(Str(L2))   'L2_="15:15" si L2=15
    L2_1 = Trim(Str(L2 + 1)) & ":" & Trim(Str(L2 + 1))
    L1_ = Trim(Str(L1)) & ":" & Trim(Str(L1))
    L1_2 = Trim(Str(L1 + 1)) & ":" & Trim(Str(L1 + 1))
    ActiveWorkbook.Sheets(1).Rows(L2_).Select                        'Select ligne L2 = Rows("15:15").Select
    Selection.Cut
    ActiveWorkbook.Sheets(1).Rows(L1_).Select                'L1
    Selection.Insert Shift:=xlDown
    ActiveWorkbook.Sheets(1).Rows(L1_1).Select                'L1+1
    Selection.Cut
    ActiveWorkbook.Sheets(1).Rows(L2_1).Select                'L2+1
    Selection.Insert Shift:=xlDown
    End Sub
    Voici l'endoit ou je l'appelle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            ...
            If (LowerDate > IDate) Then    'Verifie que la date de la ligne i n'est pas plus petite
                SwitchLigne_P(i, CurrentLigne) 'Met la ligne avec le date la plus petite à la place de la ligne courante
                LowerDate = IDate               'Sauvegarde la nouvelle date plus petite
            End If
            ...
    Lorsque je lance la macro VBA, ca me met un message d'erreur disant:
    Erreur complilation: attendu :=
    Quelqu'un comprend t il pk il me met ce message d'erreur?

  2. #2
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour

    est ce que avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwitchLigne_P i, CurrentLigne
    tu as toujours un message d'erreur?

    cordialement

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 211
    Points : 137
    Points
    137
    Par défaut
    Ce que je voulais faire ne marche pas mais au moins maintenant ca compile et le code est vivant ...
    Reste plus qu'a débuger...

    Encore merci fred65200

  4. #4
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour,

    je n'ai pas cherché à détailler ton code
    mais utilise des tableau, ce sera plus simple et certainement plus rapide.

    Teste 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 SwitchLigne_P(ByVal L1 As Long, ByVal L2 As Long)
     
    Dim TabL1 As Variant
    Dim TabL2 As Variant
     
    TabL1 = Rows(L1).Value
    TabL2 = Rows(L2).Value
     
    Rows(L1).Value = TabL2
    Rows(L2).Value = TabL1
     
    End Sub
     
    Sub testSwitchLigne()
    SwitchLigne_P 1, 2
    End Sub
    cordialement

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/02/2008, 13h10
  2. Réponses: 3
    Dernier message: 29/01/2008, 12h04
  3. Réponses: 15
    Dernier message: 26/03/2006, 12h10
  4. [FLASH MX] nom variable pour une fonction
    Par totoche dans le forum Flash
    Réponses: 2
    Dernier message: 20/12/2005, 14h00
  5. paramètres pour une fonction
    Par bul dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/05/2005, 07h49

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