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 :

Macro VBA EXCEL [XL-2010]


Sujet :

Macros et VBA Excel

  1. #21
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    rebonjour
    la variable X dans le code calcule le total pour chaque numéro de sinistre
    si tu cherche à calculer X pour chaque sous numéro qui existe en colonne R essayer avec :
    Merci de faire les testes pour détecter les anomalie avant de mettre la procédure en oeuvre
    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
    Sub test()
    Dim Tablo
    Dim j As Long
    Dim C As Integer
    Application.ScreenUpdating = False
     
    With Sheets("feuil1")
    j = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("M2:M" & j).ClearContents
    For j = 2 To j
    NUMSIN = .Cells(j, "J")
    NUMSOUSSIN = .Cells(j, "R")
    C = WorksheetFunction.CountIf(.Range("J2:J" & .Range("A" & Rows.Count).End(xlUp).Row), NUMSIN)
    D = WorksheetFunction.CountIf(.Range("R2:R" & .Range("A" & Rows.Count).End(xlUp).Row), NUMSOUSSIN)
    If C > D Then .Cells(j, 13) = "Régularisation CIE-Template"
    Next j
     
    Tablo = .Range("J2", "R" & .Range("R" & .Rows.Count).End(xlUp).Row)
     For j = 2 To j - 1
     x = 0
       For i = LBound(Tablo, 1) To UBound(Tablo, 1)
                 If .Cells(j, "R") = Tablo(i, 9) Then
                   x = x + CDbl(Tablo(i, 2))
                 End If
      Next i
      If x > -10 And x < 10 Then .Cells(j, 13) = "REGULATION ECART-TEMPLATE"
      Cells(j, "AA") = x
      'MsgBox x
      Next j
    End With
    Application.ScreenUpdating = True
     
    End Sub
    Si c'est résolu merci de cliquer en bas sur le bouton RESOLU
    BONNE JOURNEE

    Attention : le code suppose qu'il y a pas de sous numéro identique pour deux sinistres différentes

  2. #22
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    J'ai remplacé la colonne "R"par la colonne "H" sur ton code car je dois trouver le même code payeur (CIE) qui correspond à la colonne H. Donc, rien de grave j'ai juste remplacé le "R" par le H. Sauf que quand je lance la macro ça bloque, au niveau de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Cells(j, "H") = Tablo(i, 9) Then
    Il m'affiche un message :
    l'indice ne correspond pas à la sélection
    Voici ton code que j'ai repris :


    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
    Sub testMacro6()
    Dim Tablo
    Dim j As Long
    Dim C As Integer
    Application.ScreenUpdating = False
     
    With Sheets("SUIVTRANS EN COURS")
    j = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("M2:M" & j).ClearContents
    For j = 2 To j
    NUMSIN = .Cells(j, "J")
    CODECIE = .Cells(j, "H")
    C = WorksheetFunction.CountIf(.Range("J2:J" & .Range("A" & Rows.Count).End(xlUp).Row), NUMSIN)
    D = WorksheetFunction.CountIf(.Range("H2:H" & .Range("A" & Rows.Count).End(xlUp).Row), CODECIE)
    If C > D Then .Cells(j, 13) = "REGULARISATION CIE-TEMPLATE"
    Next j
     
    Tablo = .Range("J2", "H" & .Range("H" & .Rows.Count).End(xlUp).Row)
     For j = 2 To j - 1
     x = 0
       For i = LBound(Tablo, 1) To UBound(Tablo, 1)
                 If .Cells(j, "H") = Tablo(i, 9) Then
                   x = x + CDbl(Tablo(i, 2))
                 End If
      Next i
      If x >= -10 And x <= 10 And x <> 0 Then .Cells(j, 13) = "REGULATION ECART-TEMPLATE"
      Cells(j, "AA") = x
      'MsgBox x
      Next j
    End With
    Application.ScreenUpdating = True
     
    End Sub
    [/CODE]

  3. #23
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Merci de mettre le code entre balise pour faciliter la lecture (#)
    1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tablo = .Range("J2", "H" & .Range("H" & .Rows.Count).End(xlUp).Row)
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tablo = .Range("H2", "K" & .Range("K" & .Rows.Count).End(xlUp).Row)
    2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If .Cells(j, "H") = Tablo(i, 9) Then 
    x = x + CDbl(Tablo(i, 2))
    à remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If .Cells(j, "H") = Tablo(i, 1) Then
    x = x + CDbl(Tablo(i,4))

  4. #24
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    ok et ensuite ca bloque de nouveau sur cette ligne :

    x = x + CDbl(Tablo(i, 2))

  5. #25
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    j'ai modifier mon post -1

    revoir tout le message svp

  6. #26
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    Oui désolé autant por moi je suis allé trop vite j'avais loupé ton dernier code à remplacé sauf que ca bloque toujours après modification :


    x = x + CDbl(Tablo(i, 4))

  7. #27
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    t'es sure de modifier ça ?? (jusqu'à la colonne K)
    Tablo = .Range("H2", "K" & .Range("K" & .Rows.Count).End(xlUp).Row)

  8. #28
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    Ok ça fonctionne bien ! super BENNASAR

  9. #29
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    clic RESOLU en bas et un petit virement de 5 euros
    allez bonne continuation

  10. #30
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    BENNASAR sur le fichier excel que je t'ai envoyé ça marche bien mais quand je colle le code sur mon fichier de 7000 lignes, la macro se lance bien mais elle m'affiche rien en commentaire...


  11. #31
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    ajouter avant le end with une autre boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For j = 2 To j
      If .Cells(j, "L") = "REGLT" And .Cells(j, "K") > 0 Then
      .Cells(j, "M") = "REGLT CIE-SOLDE-DEBITEUR"
      Next j

  12. #32
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    Merci pour ta réponse réactive ! sauf qu'avant de passer à ça j'ai un problème tous le code qu'on a fait marche sur le fichier excel que je t'ai envoyé mais quand le copie le code sur mon fichier de 7000 ligne la macro se lance et elle m'affiche rien !!!

  13. #33
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    le plus probable est une différence de structure
    vérifiez attentivement et tu va détecter la différence si non on verra
    je quitte dans peu de temps...si non on verra demain

  14. #34
    Membre confirmé
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2018
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2018
    Messages : 121
    Par défaut
    Oui ça doit être surement cela. J'ai essayé avec l'ancien code (ci-dessous) avant les dernières modifications et ça fonctionne pour les écarts. Mais du coup on a pas vraiment la vérification qu'on a les même codes CIE en colonne H mais bon... Ça calcule quand même les écarts !

    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
    Sub macro4()
    'REGUL ECART
    Tablo = .Range("J2", "K" & .Range("K" & .Rows.Count).End(xlUp).Row)
     For j = 2 To j - 1
     x = 0
       For i = LBound(Tablo, 1) To UBound(Tablo, 1)
                 If .Cells(j, "j") <> "" And .Cells(j, "j") = Tablo(i, 1) Then
                   x = x + CDbl(Tablo(i, 2))
                 End If
      Next i
      If x >= -10 And x <= 10 And x <> 0 Then .Cells(j, 13) = "REGULATION ECART-TEMPLATE"
      Next j
    End With
     
    End Sub
    En revanche, concernant le tout premier code qu'on avait fait sur le commentaires " REGULARISATION CIE-TEMPLATE", je pense qu'il y a un problème au niveau de cette ligne : 
    If C > D Then .Cells(j, 13) = "Régularisation CIE-Template"Voici le code en entier : 
    ' Régularisation CIE-TEMPLATE
     
    Dim j As Long
    Dim C As Integer
    With Sheets("SUIVTRANS EN COURS")
    j = .Range("A" & Rows.Count).End(xlUp).Row
    MsgBox j
    .Range("M2:M" & j).ClearContents
    For j = 2 To j
    NUMSIN = .Cells(j, "J")
    NUMSOUSSIN = .Cells(j, "H")
    C = WorksheetFunction.CountIf(.Range("J2:J" & .Range("A" & Rows.Count).End(xlUp).Row), NUMSIN)
    D = WorksheetFunction.CountIf(.Range("H2:H" & .Range("A" & Rows.Count).End(xlUp).Row), NUMSOUSSIN)
    If C > D Then .Cells(j, 13) = "Régularisation CIE-Template"
    Next j
    End With
    End Sub
    Je pense qu'il faut lui dire que que pour un même sinistre en colonne "J" et que pour ce même N° de sinistre, il y a la présence de 2 codes CIE en colonne "H" différents alors ont met le commentaire.
    Alors que la, le code nous dit que C>D, ce n'est pas logique... Tu en penses quoi toi ?

    Merci de ta réponse

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

Discussions similaires

  1. [VBA-E]Probleme macro VBA excel 2000 2003
    Par skichatchat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2007, 21h16
  2. incompatibilité macros VBA excel 2000 et 2003
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2007, 12h20
  3. Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/01/2007, 10h00
  4. Auto install macro vba excel
    Par zootman dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 14/06/2006, 21h30
  5. [VBA-E] macro VBA excel suppression graphiques
    Par totoza dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/05/2006, 08h45

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