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

Excel Discussion :

Probleme de synthaxe dans une requete VBA


Sujet :

Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut Probleme de synthaxe dans une requete VBA
    Bonjour
    Je tente mon premier script vb et je rencontre des difficultés de synthaxe

    Voici mon script

    Idée est d'avoir une feuille de calcul avec différents calculs sur les colonnes M a O

    Merci pour votre aide
    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
    Sub test()
     
     
    Const MaColonne = "A"
     
    Dim valsM As Long, resultM
    Dim valsN As Long, resultN
    Dim valsO As Long, resultO
     
     
    With Sheets("toto")
     
       i = .cells(.Rows.Count, MaColonne).Offset(, 1).End(xlUp).Row
     
     
      If i <= .cells(.Rows.Count, MaColonne).End(xlUp).Row Then _
        i = .cells(.Rows.Count, MaColonne).End(xlUp).Row
     
       valsM = .Columns(MaColonne).Resize(i, 12).Value
      valsN = .Columns(MaColonne).Resize(i, 12).Value
      valsO = .Columns(MaColonne).Resize(i, 12).Value
     
     
     
        ReDim resultM Preserve (LBound(valsM) To UBound(valsM))
        ReDim resultN(LBound(valsN) To UBound(valsN))
        ReDim resultO(LBound(valsO) To UBound(valsO))
     
     
      For i = LBound(valsM) To UBound(valsM)
        resultM(i) = Format(valsM(i, 2), "yyyy-MM")
        resultN(i) = Format(valsN(i, 2), "WW")
        resultO(i) = Format(valsO(i, 2), "JJ")
    Next i
     
     
      .Columns(MaColonne).Offset(0, 13).Resize(UBound(resultM) - LBound(resultM) + 1).Value_
            = Application.Transpose(resultM)
      .Columns(MaColonne).Offset(0, 14).Resize(UBound(resultN) - LBound(resultN) + 1).Value _
            = Application.Transpose(resultN)
     
      .Columns(MaColonne).Offset(0, 15).Resize(UBound(resultO) - LBound(resultO) + 1).Value _
            = Application.Transpose(resultO)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Explique ce que tu veux faire; c'est difficile de comprendre ton code.

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut
    j'ai une date en colonne B
    Je désire en autre pouvoir mettre en :
    colonne m la date en format yyyy-mm
    colonne n le numéro de la semaine sur 2 position
    colonne O le jour sur deux positions
    colonne P j'aimerai pouvoir faire un recherchev de valeur se trouvant dans une autre feuille

    Les calculs doivent uniquement se faire si la valeur de la colonne A est non vide

    J'espère être plus clair

    Merci pour votre aide

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        Dim C As Range
        Columns(13).NumberFormat = "yyyy-mm"
        Columns(14).NumberFormat = "00"
        Columns(15).NumberFormat = "DD"
        For Each C In Range([B1], Cells(Rows.Count, 2).End(xlUp))
            If C <> "" And Cells(C.Row, 1) <> "" Then
                Cells(C.Row, 13).Value = C.Value
                Cells(C.Row, 14).Value = Application.WeekNum(C.Value, 2)
                Cells(C.Row, 15).Value = Day(C.Value)
            End If
        Next C
    End Sub
    S'il y a quelque chose que tu ne comprends pas, n'hésite pas à le dire.

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut Probleme de synthaxe dans une requete VBA
    Bonjour,

    la ligne Cells(C.Row, 15).Value = Day(C.Value) m'indique une erreur

    J'aimerai rajouter les calculs suivants tout en commençant a la ligne 2 pour pas écraser les titres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    colonne16 =SI(ET(JOURSEM(B2;2) <> 6;JOURSEM(B2;2) <> 7); SI(OU(HEURE(B2) > 19;HEURE(B2) < 7);1;0);1)
    colonne17 =SI(L2="ERREURS CONTROLM";SIERREUR(SI(CHERCHE("CTM_JOB_TIMEOUT";D2;1);"TIMEOUT");SI(CHERCHE("CTM_JOB_NOTOK";D2;1);"JOB KO"));0)
    colonne18 =SI(L2="ERREURS CONTROLM";STXT(D2;CHERCHE(" - ";D2;1)+3;10);0)
    Colonne19 =SI(L2="ERREURS CONTROLM";SIERREUR(STXT(D2;CHERCHE(" TIMEOUT : ";D2;1)+10;10);STXT(D2;CHERCHE("KO";D2;1)+4;10));0)
    Colonne20 =SI(ESTNUM(CHERCHE("PATROL Agent is unreachable";D2;1));"Agent serveur Injoignable";SI(ESTNUM(CHERCHE("Serveur inaccessible par ping";D2;1));"Serveur Inaccessible";FAUX))
    colonne21 =RECHERCHEV(E2;BASE'!A:B;2;0)
    Merci d'avance pour ton retour

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bon, je t'ai fait la colonne 16. Essaie de faire les suivantes sur le même principe : tu remplaces "2" par la ligne indiquée par "C.Row" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Dim C As Range
        Columns(13).NumberFormat = "yyyy-mm"
        Columns(14).NumberFormat = "00"
        Columns(15).NumberFormat = "DD"
        For Each C In Range([B2], Cells(Rows.Count, 2).End(xlUp))
            If C <> "" And Cells(C.Row, 1) <> "" Then
                Cells(C.Row, 13).Value = C.Value
                Cells(C.Row, 14).Value = Application.WeekNum(C.Value, 2)
                Cells(C.Row, 15).Value = Day(C.Value)
                Cells(C.Row, 16).FormulaLocal = "=SI(ET(JOURSEM(B" & C.Row & ";2)<>6;JOURSEM(B" & C.Row & ";2)<>7);SI(OU(HEURE(B" & C.Row & ")>19;HEURE(B" & C.Row & ")<7);1;0);1)"
            End If
        Next C
    End Sub

  7. #7
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut
    Bonjour,

    Dans la colonne de référence j'ai 27/01/2014 j'ai le résultat 2014-01 or lorsque je récupérer la valeur j'ai 41666 il me faudrait avoir uniquement 2014-01

    Pour la colonne 16 peux tu me dire comment avoir que le résultat et non l'implémentation de la formule.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
        Dim C As Range
        Columns(13).NumberFormat = "yyyy-mm"
        Columns(14).NumberFormat = "00"
        Columns(15).NumberFormat = "DD"
        For Each C In Range([B2], Cells(Rows.Count, 2).End(xlUp))
            If C <> "" And Cells(C.Row, 1) <> "" Then
                Cells(C.Row, 13).Value = C.Value
                Cells(C.Row, 14).Value = Application.WeekNum(C.Value, 2)
                Cells(C.Row, 15).Value = Day(C.Value)
                Cells(C.Row, 16).FormulaLocal = "=SI(ET(JOURSEM(B" & C.Row & ";2)<>6;JOURSEM(B" & C.Row & ";2)<>7);SI(OU(HEURE(B" & C.Row & ")>19;HEURE(B" & C.Row & ")<7);1;0);1)"
            End If
        Next C
    End Sub
    [/QUOTE]

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Il y a deux méthodes, selon que tu es familier avec les formules en anglais ou non :

    1.
    a) Tu mets la formule en français dans la cellule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(C.Row, 16).FormulaLocal = "=SI(ET(JOURSEM(B" & C.Row & ";2)<>6;JOURSEM(B" & C.Row & ";2)<>7);SI(OU(HEURE(B" & C.Row & ")>19;HEURE(B" & C.Row & ")<7);1;0);1)"
    b) Tu mets dans la cellule le résultat de la formule (sachant que si tu renseignes ma propriété "Value", tu supprimes la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(C.Row, 16).Value = Cells(C.Row, 16).Value
    2. Tu mets directement le résultat de l'évaluation de la formule (en anglais obligatoirement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                Cells(C.Row, 16).Value = Evaluate("IF(AND(WEEKDAY(B" & C.Row & ",2)<>6,WEEKDAY(B" & C.Row & _
                    ",2)<>7),IF(OR(HOUR(B" & C.Row & ")>19,HOUR(B" & C.Row & ")<7),1,0),1)")

  9. #9
    Membre habitué
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 319
    Points : 158
    Points
    158
    Par défaut
    J'ai essayé tes dernières commandes j'obtiens des erreurs de syntaxe
    Y a t il des outils de corrections ?

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

Discussions similaires

  1. [Access] Probleme de count dans une requete sql
    Par castelligreg dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/04/2006, 16h20
  2. [sql]Probleme de count dans une requete sql (sous access)
    Par castelligreg dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 14/04/2006, 16h06
  3. [MySQL] probleme de syntaxe dans une requete sql
    Par jeanfrancois dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/03/2006, 10h54
  4. [JDBC]problème de syntaxe dans une requête en java...
    Par chti_juanito dans le forum JDBC
    Réponses: 60
    Dernier message: 04/11/2005, 16h47
  5. Probleme de logique dans une requete
    Par linou dans le forum Langage SQL
    Réponses: 11
    Dernier message: 18/03/2005, 19h52

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