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 :

Correction de mon code vba svp


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Correction de mon code vba svp
    salut
    je me suis debutant et j' ai un problème
    mon code vba ne compile pas
    s' il vous plait aidez-moi à le corriger
    merci
    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
    Sub mise_à_jour()
    Dim i As Integer, j As Integer, qte1 As Integer, qte2 As Integer, aux1 As Integer, aux2 As Integer
    For i = 6 To 11
      If (Worksheets("FACTURE").Cells(5, 7).valeur = Worksheets("Cmdes").Cells(i, 1).valeur) Then
         If (Worksheets("Cmdes").Cells(i, 12).valeur = "oui") Then
            MsgBox "cette commande a déjà été facturéé "
            Stop
         End If
      Else
         Worksheets("Cmdes").Cells(i, 12).valeur = "oui"
      End If
      Exit For
    Next i
     
    For i = 15 To 19
      If Not (IsEmpty(Worksheets("FACTURE").Cells(i, 3))) Then
         qte1 = Worksheets("FACTURE").Cells(i, 5).valeur
         For j = 6 To 14
            If Worksheets("Fstock").Cells(j, 1).valeur = Worksheets("FACTURE").Cells(i, 3).valeur Then
               qte2 = Worksheets("Fstock").Cells(j, 3).valeur
               Worksheets("Fstock").Cells(j, 3).valeur = qte2 - qte1
            End If
         Next j
      End If
    Next i
     
    For i = 6 To 8
      If Worksheets("Fvendeur").Cells(i, 1).valeur = Worksheets("FACTURE").Cells(28, 4).valaur Then
         If IsEmpty(Worksheets("Fvendeur").Cells(i, 4)) Then
            Worksheets("Fvendeur").Cells(i, 4).valeur = Worksheets("FACTURE").Cells(26, 4)
            Worksheets("Fvendeur").Cells(i, 5).valeur = Worksheets("FACTURE").Cells(26, 4)
         Else
            aux1 = Worksheets("Fvendeur").Cells(i, 4).valeur
            aux2 = Worksheets("Fvendeur").Cells(i, 5).valeur
            Worksheets("Fvendeur").Cells(i, 4).valeur = aux1 + Worksheets("FACTURE").Cells(26, 4)
            If aux2 > Worksheets("FACTURE").Cells(26, 4) Then
               Worksheets("Fvendeur").Cells(i, 5).valeur = Worksheets("FACTURE").Cells(26, 4)
            End If
         End If
         Exit For
      End If
    Next i
     
    End Sub

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Le problème vient sans doute des"valeur" qu'il faut écrire "Value"

    Pour info, si tu écris Cells(1, 1) cela équivaut à Cells(1, 1).Value

    J'ai passé un ptit coup d'aspirateur dans ton code, essaye le comme ceci :
    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
    Sub mise_à_jour()
    Dim i As Integer, j As Integer, qte1 As Integer, qte2 As Integer, aux1 As Integer, aux2 As Integer
    Dim WSfac As Worksheet, WScmd As Worksheets, WSsto As Worksheet, WSven As Worksheet
     
    Set WSfac = Worksheets("FACTURE")
    Set WScmd = Worksheets("Cmdes")
    Set WSsto = Worksheets("Fstock")
    Set WSven = Worksheets("Fvendeur")
     
    For i = 6 To 11
      If WSfac.Cells(5, 7) = WScmd.Cells(i, 1) Then
         If WScmd.Cells(i, 12) = "oui" Then
            MsgBox "cette commande a déjà été facturéé "
            Exit Sub
         Else
            WScmd.Cells(i, 12) = "oui"
         End If
      End If
    Next i
     
    For i = 15 To 19
      If WSfac.Cells(i, 3) <> "" Then
         qte1 = WSfac.Cells(i, 5)
         For j = 6 To 14
            If WSsto.Cells(j, 1) = WSfac.Cells(i, 3) Then
               qte2 = WSsto.Cells(j, 3)
               WSsto.Cells(j, 3) = qte2 - qte1
            End If
         Next j
      End If
    Next i
     
    For i = 6 To 8
      If WSven.Cells(i, 1) = WSfac.Cells(28, 4) Then
         If WSven.Cells(i, 4) = "" Then
            WSven.Cells(i, 4) = WSfac.Cells(26, 4)
            WSven.Cells(i, 5) = WSfac.Cells(26, 4)
         Else
            aux1 = WSven.Cells(i, 4)
            aux2 = WSven.Cells(i, 5)
            WSven.Cells(i, 4) = aux1 + WSfac.Cells(26, 4)
            If aux2 > WSfac.Cells(26, 4) Then
               WSven.Cells(i, 5) = WSfac.Cells(26, 4)
            End If
         End If
      End If
    Next i
     
    End Sub
    et dis moi si cela coince encore quelque par vu que je ne peux pas le tester
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut correction de mon code vba
    merci pour la solution mais le code ne execute pas
    au niveau de l' instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set WScmd = Worksheets("Cmdes")
    un message d' erreur est renvoyer à savoir
    run-time error '13'

    s'il vous plait il y a quelle diference entre
    cells(1,1) et cells(1,1).valeur

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut correction de mon code vba
    fring a correctement fait les declarations
    curieusement
    l' instruction Set WSfac = Worksheets("FACTURE") est accepteé
    mais l'instr Set WScmd = Worksheets("Cmdes") ne l' est pas
    s'il vous plait aider moi merci

  5. #5
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    oups...c'est moi qui ai fait l'erreur dans la déclaration de la variable, enlève le "s" à WScmd As Worksheets
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut à tous
    Salut njinkeu.mbakob
    je me suis debutant et j' ai un problème
    Je vais pas redonner la même chosz fring, une fois suffit
    Déjà, pour un "débutant", penser à déclarer ses variables, c'est super.

    Tu demandes de corriger ton code et je ne peux pas : un code est indissociable de l'action qu'on veut lui faire faire (l'algorythmes, ça fait plus pro, non ? ).

    ores, là, j'ai une macro qui utilises des feuilles de noms Factures, Commandes,... et uniquement sur des lignes fixes. Et ne connaissant pas le but à atteindre, je ne peux corriger le code. Un exemple (j'ai pris le code de fring
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 6 To 11
      If WSfac.Cells(5, 7) = WScmd.Cells(i, 1) Then
         If WScmd.Cells(i, 12) = "oui" Then
            MsgBox "cette commande a déjà été facturéé "
            Exit Sub
         Else
            WScmd.Cells(i, 12) = "oui"
         End If
      End If
    Next i
    Donc, on regarde pour la colonne G (moi, je préfère écrire Range("G" & i), le point derrière m'ouvre la liste des propriétés accessibles ce qui évite certaines erreurs, ou Cells(i,"G"), ce qui est plus lisible que Cells(i,7), mais chacun sa méthode).les lignes 6 à 11 (les 6 lignes). Pour un gain de temps, je mettrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
         Else
            WScmd.Cells(i, 12) = "oui"
            Exit For
         End If
    Pas après le premier End If, comme dans ton code initial, non parce que ça ne marcherait pas (dans ce code, le fonctionnement est identique), mais parce que c'est lié l'inscrption du Oui en L12.
    Et là, problème : je ne sais pas ce que tu veux en faire ! Je n'ai pas vu d'autre modification de cette cellule (une remise à ""), donc le code me semble incomplet : si tu as "OUI" en L7 une fois, quelque soit le nombre de fois où tu lanceras ta macro, il t restera.
    Donc, pour corriger un code, j'ai besoin de savoir le but à atteindre, ce qu'il doit faire.

    A+

Discussions similaires

  1. [XL-2007] Comment simplifier mon code VBA SVP?
    Par anthooooony dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2012, 10h59
  2. Explication code VBA svp
    Par Guns Of The Patriots dans le forum VBA Access
    Réponses: 6
    Dernier message: 10/06/2008, 12h33
  3. [debutant] comment transposer mon code vba excel en access
    Par eclipse012 dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/02/2008, 08h23
  4. Comment verouiller mon code vba?
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/06/2007, 19h06
  5. afficher un graphique dans word à partir de mon code vba
    Par guysocode dans le forum VBA Word
    Réponses: 2
    Dernier message: 07/11/2005, 14h15

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