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 :

Problème sur une macro : codage complexe [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Problème sur une macro : codage complexe
    Bonjour à tous je suis très embêté car je ne savais pas que quand tu insère un bouton pour lancer ta macro, elle reconnait pas les "With" donc du coup j'ai du les enlever et ma macro ne marche plus comme elle devrait... C'est à dire elle me faire tous bien sauf cette étape là : 'MONTANT TOTAL NON RECOUVRE SUR DOSSIER => COLONNE R

    Voici le codage qui marche avec le With :

    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
    Sub Test()
    With Sheets("SUIVTRANS EN COURS")
        Derligne = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("M2:M" & Derligne).ClearContents
     
        Tablo = .Range("J2", "K" & .Range("K" & .Rows.Count).End(xlUp).Row)
     
        For j = 2 To Derligne
     
         somme = 0
            codeP = .Cells(j, "H")
            For i = LBound(Tablo, 1) To UBound(Tablo, 1)
                If .Cells(j, "J") = Tablo(i, 1) Then
                    If .Cells(i + 1, "H") <> codeP Then
                        GoTo pasDeCommentaire
                    Else
                        somme = somme + CDbl(Tablo(i, 2))
                    End If
                End If
     
            Next i
     
     
            'MONTANT TOTAL NON RECOUVRE SUR DOSSIER => COLONNE R
           .Cells(j, 18) = somme
     
            'REGULARISATION ECART-TEMPLATE (2)
     
             If Cells(j, "R") >= -10 And Cells(j, "R") <= 10 And Cells(j, "R") <> 0 Then
                .Cells(j, 13) = "REGULARISATION ECART-TEMPLATE"
     
            'SOLDE CREDITEUR - A REMBOURSER (3)
     
            ElseIf Cells(j, "R") < -10 Then
                .Cells(j, 13) = "SOLDE CREDITEUR - A REMBOURSER"
     
     
            'REGLT CIE - SOLDE DEBITEUR (4)
     
             ElseIf .Cells(j, 9) = "REGLT" And Cells(j, "R") > 10 Then
                .Cells(j, 13) = "REGLT CIE-SOLDE-DEBITEUR"
     
            'ANNULATION TECHNIQUE (5)
            ElseIf Mid(.Cells(j, "F").Text, 5, 1) = "A" And Mid(.Cells(j, "F").Text, 1, 1) = "S" Then .Cells(j, "M").Value = "ANNULATION TECHNIQUE"
     
          End If
     
    pasDeCommentaire:
     
        Next j
     
    End With
    End Sub
    Voici la ligne qui me donne pas le résultat indiquer Voici LE CODE sans le With :

    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
    Sub testsia()
     
    Sheets("SUIVTRANS EN COURS").Activate
     
        Derligne = Range("A" & Rows.Count).End(xlUp).Row
        Range("R3:R" & Derligne).ClearContents
     
        Tablo = Range("J3", "K" & Range("K" & Rows.Count).End(xlUp).Row)
     
        For j = 3 To Derligne
     
         somme = 0
            codeP = Cells(j, "H")
            For i = LBound(Tablo, 1) To UBound(Tablo, 1)
                If Cells(j, "J") = Tablo(i, 1) Then
                    If Cells(i + 1, "H") <> codeP Then
     
                    Else
                        somme = somme + CDbl(Tablo(i, 2))
                    End If
                End If
     
            Next i
     
            'MONTANT TOTAL NON RECOUVRE SUR DOSSIER => COLONNE R
          Cells(j, 18) = somme
     
            'REGULARISATION ECART-TEMPLATE (2)
     
             If Cells(j, "R") >= -10 And Cells(j, "R") <= 10 And Cells(j, "R") <> 0 Then
                Cells(j, 13) = "REGULARISATION ECART-TEMPLATE"
     
            'SOLDE CREDITEUR - A REMBOURSER (3)
     
            ElseIf Cells(j, "R") < -10 Then
                Cells(j, 13) = "SOLDE CREDITEUR - A REMBOURSER"
     
     
            'REGLT CIE - SOLDE DEBITEUR (4)
                   ElseIf Cells(j, 9) = "REGLT" And Cells(j, "R") > 10 Then
                'Cells(j, 13) = "REGLT CIE-SOLDE-DEBITEUR"
     
            'ANNULATION TECHNIQUE (5)
            ElseIf Mid(Cells(j, "F").Text, 5, 1) = "A" And Mid(Cells(j, "F").Text, 1, 1) = "S" Then Cells(j, "M").Value = "ANNULATION TECHNIQUE"
     
          End If
     
    pasDeCommentaire:
     
        Next j
    End Sub

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Peut etre suis-je un extra-terrestre, j'utilise des boutons pour lancer mes macro et j'ai des with



  3. #3
    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
    Citation Envoyé par jpvba Voir le message
    Peut etre suis-je un extra-terrestre, j'utilise des boutons pour lancer mes macro et j'ai des with


    AHAHAH Sérieusement !! moi ça bloqué à cause des With....

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Obadj,

    je ne savais pas que quand tu insère un bouton pour lancer ta macro, elle reconnait pas les "With"
    Moi non plus!

    Il faut savoir que si tu ne précises pas la feuille parent, alors celle considérée est la feuille active
    Sans avoir regardé le code, je dirais que le problème pourrait y trouver sa cause.

    Le rattachement des objets est essentiel, c'est pourquoi il faut toujours conserver la feuille parent qui peut faire l'objet d'un bloc With.

    Pour quelle raison avances-tu la non reconnaissance du bloc With?

    AHAHAH Sérieusement !!
    Si, si!
    Comme jpvba, que je salue, je vais passer pour un rigolo!

  5. #5
    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
    Regarde par exemple j'ai affecter cette macro simple à mon bouton et ça bloque sur la ligne orange il affiche la fameuse fléche jaune With :

    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 FormuleL()
      
    Dim d As Long
    
    With Sheets("SUIVTRANS EN COURS")
       
        d = .Range("A" & Rows.Count).End(xlUp).Row
    
         .Range("L3").Select
        ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]="""",""PRINCIPAL ""&MID(RC[3],9,8),IF(LEFT(RC[-3],5)=""REGLT"",""REGLT"",IF(LEFT(RC[-3],1)=""G"",""TAXE DE GESTION"",IF(LEFT(RC[-3],1)=""P"",""PRINCIPAL ""&MID(RC[3],9,8),IF(LEFT(RC[-3],1)=""R"",""RECOURS ""&MID(RC[3],9,8),IF(LEFT(RC[-3],1)=""F"",""FRAIS""))))))"
        .Range("L3").AutoFill Destination:=Range("L3:L" & d)
        
        Calculate
    End With
    End Sub

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Comme jpvba ( ), j'ai des macros lancées par des boutons (que ce soit des boutons dans une feuille ou un ruban) contenant des With et qui fonctionnent très bien.

    Je pense que tu as mal interprété le message d'erreur que t'a transmis l'exécution.

  7. #7
    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
    SA ME SOULEEEEE

    QUAND JE FAIS AVEC F8 CA BLOQUE PAS ET QUAND J'appuie sur le BOUTON CA BLOQUE ! Il me dit maintenant, " La méthode select de la classe Range à échoué" ....


  8. #8
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Quel est le code du bouton?
    Juste un appel de procédure?

  9. #9
    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
    Citation Envoyé par MarcelG Voir le message
    Quel est le code du bouton?
    Juste un appel de procédure?
    Le code du bouton est celui la :

    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 FormuleL()
     
    Dim d As Long
     
    With Sheets("SUIVTRANS EN COURS")
        'Sheets("SUIVTRANS EN COURS").Activate
        d = .Range("A" & Rows.Count).End(xlUp).Row
     
        .Range("L3").Select
        ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]="""",""PRINCIPAL ""&MID(RC[3],9,8),IF(LEFT(RC[-3],5)=""REGLT"",""REGLT"",IF(LEFT(RC[-3],1)=""G"",""TAXE DE GESTION"",IF(LEFT(RC[-3],1)=""P"",""PRINCIPAL ""&MID(RC[3],9,8),IF(LEFT(RC[-3],1)=""R"",""RECOURS ""&MID(RC[3],9,8),IF(LEFT(RC[-3],1)=""F"",""FRAIS""))))))"
        .Range("L3").AutoFill Destination:=Range("L3:L" & d)
     
        Calculate
    End With
    End Sub
    Maintenant ca bloque à cette ligne quand j'appui sur le bouton:Très relou car quand je le fait a la main avec F8 ca fonctionne très bien

  10. #10
    Membre éclairé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2017
    Messages : 556
    Par défaut
    Lâche pas OBADJ, je suis sur que tu va trouvé bientôt ce qui cause cette embûche !!!


    Salut la gang (Menhir, MarcelG )

  11. #11
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par OBADJ Voir le message
    Il me dit maintenant, " La méthode select de la classe Range à échoué" ....
    Juste avant cette ligne, vérifie quel est le classeur actif, par exemple avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print ActiveWorkbook
    Est-ce que c'est celui qui contient la feuille fédérée par ton With ?

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

Discussions similaires

  1. [XL-2010] Probleme sur une macro envoi email
    Par gothc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/09/2016, 09h27
  2. [XL-2010] Probleme sur simple macro de recherche d'une valeur
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2013, 16h35
  3. Probleme sur une Jointure complexe
    Par Delphy113 dans le forum Requêtes
    Réponses: 13
    Dernier message: 02/12/2008, 14h42
  4. Probleme sur une fonction vérif
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/10/2004, 13h25
  5. Problème sur une cmd avec AWK
    Par OrangeBud dans le forum Linux
    Réponses: 3
    Dernier message: 02/06/2004, 10h51

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