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 :

Code VBA qui fonctionne mal


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Juillet 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Juillet 2015
    Messages : 7
    Par défaut Code VBA qui fonctionne mal
    Bonjour à Tous,

    Je suis confronté à un probleme sur le code ci-dessous. En effet, le code fonctionne mais il s'avere que mes conditions ne sont pas totalement respectées.
    Je résume mon code : Le code va chercher un fichier sur le site de la BCE ensuite il effectue 3 check sur sur la variable range(c&i) si une des 3 premieres conditions est respectées, la variable range(f&i) est checkée à son tour de meme que la variable range(m&i). J'ai l'impression que mes conditions ne sont pas respectées exceptées le premier check L1A, L1B et L1C. J espere avoir été clair, merci de votre aide. J espere ne pas voir ouvert un topic deka existant sorry si c est le cas...
    Cdt,

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Public Sub telecharger()
     
    Dim strURL As String, i As Long, x As Long
     
    strURL = "http://www.ecb.europa.eu/paym/coll/assets/html/dla/EA/ea_all_150703.txt"
     
    Workbooks.Open Filename:=strURL
     
    Columns("A:W").Select
        Columns("A:W").EntireColumn.AutoFit
     
         Sheets.Add After:=Sheets(Sheets.Count)
        Sheets.Add After:=Sheets(Sheets.Count)
        Sheets.Add After:=Sheets(Sheets.Count)
        Sheets("Sheet1").Select
        Sheets("Sheet1").Name = "L1A"
        Sheets("Sheet2").Select
        Sheets("Sheet2").Name = "L1B"
        Sheets("Sheet3").Select
        Sheets("Sheet3").Name = "L1C"
     
    Sheets("ea_all_150703").Select
     
     
    For i = 2 To 40000
     
    If Range("c" & i) = "L1C" Then
        If Range("F" & i) = "EUR" Or Range("F" & i) = "ATS" Or Range("F" & i) = "BEF" Or Range("F" & i) = "CYP" Or Range("F" & i) = "DEM" Or Range("F" & i) = "ESP" Or Range("F" & i) = "EEK" Or Range("F" & i) = "FIM" Or Range("F" & i) = "FRF" Or Range("F" & i) = "GRD" Or Range("F" & i) = "IEP" Or Range("F" & i) = "ITL" Or Range("F" & i) = "LUF" Or Range("F" & i) = "NLG" Or Range("F" & i) = "PTE" Or Range("F" & i) = "SIT" Or Range("F" & i) = "SKK" Or Range("F" & i) = "LVL" And Range("M" & i) = "IRAT" Or Range("M" & i) = "IRDE" Or Range("M" & i) = "IRFI" Or Range("M" & i) = "IRFR" Or Range("M" & i) = "IRNL" Or Range("M" & i) = "IRDK" Or Range("M" & i) = "IRSE" Then
            Sheets("ea_all_150703").Select
            Range("A" & i).Copy
            Sheets("L1C").Select
            ActiveSheet.Paste
            ActiveCell.Offset(1, 0).Select
            Sheets("ea_all_150703").Select
         End If
    End If
    If Range("c" & i) = "L1B" Then
         If Range("F" & i) = "EUR" Or Range("F" & i) = "ATS" Or Range("F" & i) = "BEF" Or Range("F" & i) = "CYP" Or Range("F" & i) = "DEM" Or Range("F" & i) = "EPS" Or Range("F" & i) = "EEK" Or Range("F" & i) = "FIM" Or Range("F" & i) = "FRF" Or Range("F" & i) = "GRD" Or Range("F" & i) = "IEP" Or Range("F" & i) = "ITL" Or Range("F" & i) = "LUF" Or Range("F" & i) = "NLG" Or Range("F" & i) = "PTE" Or Range("F" & i) = "SIT" Or Range("F" & i) = "SKK" Or Range("F" & i) = "LVL" And Range("M" & i) = "IRAT" Or Range("M" & i) = "IRDE" Or Range("M" & i) = "IRFI" Or Range("M" & i) = "IRFR" Or Range("M" & i) = "IRNL" Or Range("M" & i) = "IRDK" Or Range("M" & i) = "IRSE" Then
            Sheets("ea_all_150703").Select
            Range("A" & i).Copy
            Sheets("L1B").Select
            ActiveSheet.Paste
            ActiveCell.Offset(1, 0).Select
            Sheets("ea_all_150703").Select
        End If
    End If
    If Range("c" & i) = "L1A" Then
        If Range("F" & i) = "EUR" Or Range("F" & i) = "ATS" Or Range("F" & i) = "BEF" Or Range("F" & i) = "CYP" Or Range("F" & i) = "DEM" Or Range("F" & i) = "ESP" Or Range("F" & i) = "EEK" Or Range("F" & i) = "FIM" Or Range("F" & i) = "FRF" Or Range("F" & i) = "GRD" Or Range("F" & i) = "IEP" Or Range("F" & i) = "ITL" Or Range("F" & i) = "LUF" Or Range("F" & i) = "NLG" Or Range("F" & i) = "PTE" Or Range("F" & i) = "SIT" Or Range("F" & i) = "SKK" Or Range("F" & i) = "LVL" And Range("M" & i) = "IRAT" Or Range("M" & i) = "IRDE" Or Range("M" & i) = "IRFI" Or Range("M" & i) = "IRFR" Or Range("M" & i) = "IRNL" Or Range("M" & i) = "IRDK" Or Range("M" & i) = "IRSE" Then
            Sheets("ea_all_150703").Select
            Range("A" & i).Copy
            Sheets("L1A").Select
            ActiveSheet.Paste
            ActiveCell.Offset(1, 0).Select
            Sheets("ea_all_150703").Select
         End If
    End If
     
    If IsEmpty(ActiveCell.Value) Then
        Exit For
    End If
     
    Next i
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Je n'ai pas regardé tout le code mais ce serait pas mieux en concaténant les groupes de lettres et en cherchant si ça existe dans la chaîne avec "InStr" ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Texte As String
     
    Texte = "EUR_ATS_BEF_CYP_DEM_ESP_EEK_FIM_FRF_GRD_IEP_ITL_LUF_NLG_PTE_SIT_SKK_LVL_IRAT_IRDE_IRFI_IRFR_IRNL_IRDK_IRSE"
     
    If InStr(Texte, Range("F" & I).Value) <> 0 Then
     
        MsgBox "C'est dans la boite !"
     
    End If
    Hervé.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    Les parenthèses :

    If (condition 1 OU condition2 ...) AND (condition 3 OU condition4 ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    If (Range("F" & i) = "EUR" Or Range("F" & i) = "ATS" Or Range("F" & i) = "BEF" Or Range("F" & i) = "CYP" _
    Or Range("F" & i) = "DEM" Or Range("F" & i) = "ESP" Or Range("F" & i) = "EEK" Or Range("F" & i) = "FIM" _
    Or Range("F" & i) = "FRF" Or Range("F" & i) = "GRD" Or Range("F" & i) = "IEP" Or Range("F" & i) = "ITL" _
    Or Range("F" & i) = "LUF" Or Range("F" & i) = "NLG" Or Range("F" & i) = "PTE" Or Range("F" & i) = "SIT" _
    Or Range("F" & i) = "SKK" Or Range("F" & i) = "LVL") _
    And _
    (Range("M" & i) = "IRAT" Or Range("M" & i) = "IRDE" Or Range("M" & i) = "IRFI" Or Range("M" & i) = "IRFR" _
    Or Range("M" & i) = "IRNL" Or Range("M" & i) = "IRDK" Or Range("M" & i) = "IRSE") Then
    A+

  4. #4
    Membre du Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Juillet 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Juillet 2015
    Messages : 7
    Par défaut
    Bonsoir à Vous,

    Merci pour vos réponses précises, le code semble bien fonctionner. Je vais faire un Vlookup pour voir si ca n a pas planté quelque part.

    Merci encore

    Cdt,

  5. #5
    Membre du Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Juillet 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Juillet 2015
    Messages : 7
    Par défaut
    Bonjour à tous,

    Je reviens vers vous car j'ai un autre soucis sur le code :

    J'aimerais savoir s'il etait possible de rendre le lien URL de mon code dynamique? En effet, le nom du fichier change toutes les semaines, et je dois changer le nom toutes les semaines pour que la macro puisse marcher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub telecharger()
     
    Dim strURL As String, i As Long, x As Long
     
    strURL = "http://www.ecb.europa.eu/paym/coll/assets/html/dla/EA/ea_all_150703.txt"
     
    Workbooks.Open Filename:=strURL
    Mon deuxieme problème est que dans mon code il y a une boucle for que je fais tourner arbitrairement jusqu'à N fois, sauf que j'aimerais essayer de faire tourner la boucle jusqu'à la derniere cellule non vide de la colonne A.
    J'utilise x = Application.WorksheetFunction.CountA(sheet1.Range("$A:$A")) afin de connaitre le nombre de fois exacte que la boucle doit tourner, sauf que la macro ne marche pas il me donne un message d'erreur : Objet requis...

    Merci,

    Cdt,

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    Boucle sur les lignes (dernière ligne non vide) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Sub boucle_sur_lignes()
        Dim DerLig As Double, Count As Double
     
        DerLig = Worksheets("ea_all_150703").UsedRange.SpecialCells(xlCellTypeLastCell).Row
     
        For Count = 2 To DerLig
            'CODE ICI
        Next Count
     
    End Sub
    Si tu veux absolument prendre en compte uniquement la colonne A, alors utilise ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DerLig = Sheets("ea_all_150703").Cells(Rows.count, 1).End(xlUp).Row
    Pour le nom dynamique, donne nous le nom pour la semaine dernière et cette semaine.

    Bonne continuation.

Discussions similaires

  1. [XL-2007] Code VBA qui fonctionne sous XL 2007 mais ne fonctionne pas sous ACCESS 2003.
    Par casdidier dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/09/2014, 00h43
  2. [MySQL] code et bdd qui fonctionne mal
    Par arckaniann dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 10/05/2011, 18h20
  3. [XL-2007] Pb de code VBA qui ne fonctionne plus
    Par rch05 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2011, 07h41
  4. code vba qui fonctionnes plus du jour au lendemain
    Par alexkickstand dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/07/2008, 16h41

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