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 :

Probleme de syntaxe


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    326
    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 : 326
    Par défaut
    Bonjour,

    dans l'autre mouture de la ligne 24 a 32, il semble qu'il y est une erreur

    je cherchais a lui spécifier une condition sur la ligne 8 :
    total valeur non vide de la colonne T =1 soit l'entete mettre 0 (retirer la ligne d'entete)
    sinon la valeur afficher total valeur non vide de la colonne T-1 (retirer la ligne d'entete)

    or il affiche 1 quand ne contient rien hormis l'entete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        If WorksheetFunction.CountA(NomF.Columns(20)) >= 1 Then
          .Cells(8, x + 3) = WorksheetFunction.CountA(NomF.Columns(20)) - 1
        Else
          .Cells(8, x + 3) = WorksheetFunction.CountA(NomF.Columns(20))
        End If
      Next x

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,

    De toutes façons, je n'ai pas très bien compris ce que tu cherchais dans cette colonne T qui me parait inutile. Quand je regarde ta formule sur les pages mensuelles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ET(A74<>"";L74="");"vide";"")
    ne serait'il pas préférable de compter les "vide" directement sur la colonne concernée L, la colonne A me parait toujours renseignée, non ?,
    Quand tu m'aura expliqué, on devrais résoudre ce problème facilement. C'est toi qui as écris ceci que j'ai repris bétement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=IF(COUNTA(2013_01!T:T)>=1,COUNTA(2013_01!T:T)-1,COUNTA(2013_01!T:T))"
    , je ne me mouille pas quand je ne vois pas le but.

    Avec ce que je t'ai donné comme code, n'aurais-tu pas pu régler le problème toi-même ?, si tu ne comprends pas tout ce que je te fournis, dis-le et je mettrai les explications avec.
    Sinon, et le reste, ça fonctionne ?
    Si oui, regardes cette solution
    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
    Sub Macro2013_bis()
    Dim Dl As Range, x As Long, y As Long, z As Long
    Dim Cpte As Long, NomF As Worksheet
    Dim Tb2013, TbMensuel
    With Sheets("Annee_2013")
      .Range("D9:F32") = Null 'ici remettre toutes les colonnes _
      quand le fichier aura toutes ses feuilles donc ".Range("D9:O32") = Null"
        Tb2013 = .Range("B9:F32") 'ici remettre toutes les colonnes _
      quand le fichier aura toutes ses feuilles donc ".Range("B9:O32") = Null"
      For x = 1 To 3 'ici remettre 12 quand toutes les feuilles seront réintégrées
        If x < 10 Then
          Set NomF = Sheets("2013_0" & x)
        Else
          Set NomF = Sheets("2013_" & x)
        End If
        TbMensuel = NomF.Range("L2", NomF.Range("L" & NomF.Rows.Count).End(xlUp))
        For y = 1 To UBound(Tb2013, 1)
          For z = 1 To UBound(TbMensuel, 1)
            If Tb2013(y, 1) = TbMensuel(z, 1) Then Cpte = Cpte + 1
          Next z
          Tb2013(y, x + 2) = Cpte
          Cpte = 0
        Next y
        Set Dl = NomF.Range("A" & NomF.Rows.Count).End(xlUp)
        .Cells(8, x + 3) = WorksheetFunction.CountIfs(NomF.Range("A2", Dl), "<>", NomF.Range("L2", Dl(1, 12)), "")
      Next x
      .Range("B9").Resize(UBound(Tb2013, 1), UBound(Tb2013, 2)) = Tb2013
    End With
    End Sub
    Courage

    EDIT : j'ai remarqué que ton fichier est long à s'ouvrir (au moins, chez moi), il y a, apparemment, beaucoup de formules pour beaucoup de données, alors si on peut limiter, peut-être pourrais-tu supprimer la colonne T (si tu retiens le dernier code ci-dessus) et les colonnes qui ne servent à rien (M à AB), mais tu t'en sers peut-être ailleurs.....
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    326
    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 : 326
    Par défaut
    Bonjour,

    j'ai essaye de compter les vide sur la colonne L mais je ne savais compter les valeurs vide d'une plage c'est pourquoi j'ai créé la colonne T.

    mais il est vrai qu'il y a surement plus simple, je suis autodidacte en vba, donc je n'utilise surement pas les chemins les plus directs.

    J'ai toujours la valeur 1 dans la ligne 8 quand le mois ne contient rien hormis les entêtes de colonne.

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    j'ai testé mon dernier code avec 12 feuilles, l'as-tu essayé ?, je ne m'occupe plus de la col T
    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
    Sub Macro2013_bis()
    Dim Dl As Range, x As Long, y As Long, z As Long
    Dim Cpte As Long, NomF As Worksheet
    Dim Tb2013, TbMensuel
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    With Sheets("Annee_2013")
      .Range("D9:O32") = Null 'ici remettre toutes les colonnes _
      quand le fichier aura toutes ses feuilles donc ".Range("D9:O32") = Null"
        Tb2013 = .Range("B9:O32") 'ici remettre toutes les colonnes _
      quand le fichier aura toutes ses feuilles donc ".Range("B9:O32") = Null"
      For x = 1 To 12 'ici remettre 12 quand toutes les feuilles seront réintégrées
        If x < 10 Then
          Set NomF = Sheets("2013_0" & x)
        Else
          Set NomF = Sheets("2013_" & x)
        End If
        TbMensuel = NomF.Range("L2", NomF.Range("L" & NomF.Rows.Count).End(xlUp))
        For y = 1 To UBound(Tb2013, 1)
          For z = 1 To UBound(TbMensuel, 1)
            If Tb2013(y, 1) = TbMensuel(z, 1) Then Cpte = Cpte + 1
          Next z
          Tb2013(y, x + 2) = Cpte
          Cpte = 0
        Next y
        Set Dl = NomF.Range("A" & NomF.Rows.Count).End(xlUp)
        .Cells(8, x + 3) = WorksheetFunction.CountIfs(NomF.Range("A2", Dl), "<>", NomF.Range("L2", Dl(1, 12)), "")
      Next x
      .Range("B9").Resize(UBound(Tb2013, 1), UBound(Tb2013, 2)) = Tb2013
    End With
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2014
    Messages
    326
    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 : 326
    Par défaut
    Bonjour,

    Cela marche super en revanche peux tu m'expliquer la syntaxe de la ligne 28

    ceci pour tenter d'optimiser ma répartition journalière et supprimer les toutes les formules

    Et sachant que le nom de l'onglet se trouve en D6 quel est la déclaration que je dois faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim  date as  ?
    date = range("D6").value
    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. probleme de syntaxe sql dans VB
    Par njac dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 20/05/2005, 15h41
  2. [VB.NET] Probleme de syntaxe
    Par microthib dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/03/2005, 14h49
  3. probleme fonction syntaxe
    Par gIch dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 28/02/2005, 10h52
  4. [Débutante] Problèmes de syntaxe
    Par new_wave dans le forum Prolog
    Réponses: 4
    Dernier message: 02/11/2004, 19h39
  5. Problemes de syntaxe
    Par maahta dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 01/10/2003, 14h40

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