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 :

corriger ma macro Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Par défaut corriger ma macro Excel
    Bonsoir ,

    J'ai besoin de votre support la famille :

    J'aimerai traduire ma macro de facturation excel dans un fichier Access.
    Ma Macro actuelle presente plusieurs probleme dans mon fichier inital excel:
    La cellule C11 ne se met pas a jour automatiquement lorsque la cellule C9 est modifié, donc en resumé nous avons trois problèmes à resoudre avec cette macro :
    Mettre les données de la cellule C11 à jour automaiquement quand C9 est modifié
    deuxiement généré le poids total arrondi dans la cellule E102 lorsque le resultat du poids total s'affiche dans la cellule D102
    Troisiemementgénérer automatiquement le tarif unitaire selon les conditions enumérées dans la macro.
    Quatrième pouvoir mettre la date automatique lorsque le fichier est renseigné via une macro.
    J'aimerai que dans l'adaptation dans le fichier Access les memes erreurs ne soient pas repetée.
    Facture Macro.xlsm
    Voici ci-dessous ma macro je vous ajoute également mon fichier excel.

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    Sub numeroFacture()
     
    Dim numeroFacture As Long
     
    ' Remplacer "Mise à Fob" par le nom de votre feuille de travail
    With ThisWorkbook.Sheets("Mise à Fob")
    lastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
     
    If lastRow > 1 Then
    numeroFacture = 1
    Else
    numeroFacture = 0
    End If
     
    .Cells(2, "C").Value = numeroFacture
    End With
    MiseAJourInfos
    CalculerMontantFacture
     
    End Sub
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Mise à Fob") ' Remplacez "Mise à Fob" par le nom de votre feuille de travail
     
    ' Vérifier si le changement a eu lieu dans la plage des poids des marchandises (colonne D)
    If Not Intersect(Target, ws.Range("D20:D100")) Is Nothing Then
    ' Mise à jour du poids total arrondi (cellule E102) avec la somme des poids des marchandises arrondie à la tonne supérieure
    ws.Range("E102").Value = Application.WorksheetFunction.Ceiling(Application.WorksheetFunction.Sum(ws.Range("D20:D100")), 1)
    CalculerMontantFacture ' Recalculer le montant de la facture après la mise à jour du poids total
    End If
     
    ' Vérifier si le changement a eu lieu dans la cellule C9
    If Target.Address = "$C$9" Then
    MiseAJourInfos
    CalculerMontantFacture ' Recalculer le montant de la facture après la mise à jour du type d'opération
    End If
    End Sub
     
    Sub MiseAJourInfos()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Mise à Fob")
     
    Dim nomSite As String
    nomSite = ws.Cells(2, "C").Value
     
    Select Case nomSite
    Case "MAERSK SP0"
    ws.Cells(4, "C").Value = "CI01MLOP64"
    ws.Cells(5, "C").Value = "CI010110"
    Case "GMCI"
    ws.Cells(4, "C").Value = "CI01MLOP69"
    ws.Cells(5, "C").Value = "CI010115"
    Case "SACC/ETMD"
    ws.Cells(4, "C").Value = "CI01MLOPLS"
    ws.Cells(5, "C").Value = "CI010116"
    Case "SITAPA"
    ws.Cells(4, "C").Value = "CI01MLOP68"
    ws.Cells(5, "C").Value = "CI010114"
    Case "IROKOTARASNCI"
    ws.Cells(4, "C").Value = "CI01MLOPL2"
    ws.Cells(5, "C").Value = "CI010119"
    End Select
     
    Dim nbMarchandises As Double
    nbMarchandises = Application.WorksheetFunction.CountA(ws.Range("C20:C100"))
    ws.Cells(10, "C").Value = nbMarchandises
     
    Dim typeOperation As String
    typeOperation = ws.Cells(9, "C").Value
     
    Select Case typeOperation
    Case "Vrac"
    ws.Cells(11, "C").Value = "20'"
    Case "Sac"
    ws.Cells(11, "C").Value = "40'"
    Case "Conventionnel"
    ws.Cells(11, "C").Value = "0"
    End Select
    End Sub
     
    Sub CalculerMontantFacture()
    ' Remplacer "Mise à Fob" par le nom de votre feuille de travail
    With ThisWorkbook.Sheets("Mise à Fob")
    ' Récupérer le poids total à facturer (cellule D102)
    Dim poidsTotal As Double
    poidsTotal = Application.WorksheetFunction.Sum(.Range("D20:D101")) / 1000
    .Cells(102, "D").Value = poidsTotal
     
    ' Récupérer le nom du client sélectionné
    Dim nomClient As String
    nomClient = .Cells(6, "C").Value
     
    ' Récupérer le type de prestation (cellule C13)
    Dim typePrestation As String
    typePrestation = .Cells(13, "C").Value
     
    ' Générer le tarif unitaire en fonction du nom du client et de sa prestation
    Dim tarifUnitaire As Double
    tarifUnitaire = ObtenirTarifUnitaire(nomClient, typePrestation)
     
    ' Placer le tarif unitaire dans la cellule F102
    .Cells(102, "F").Value = tarifUnitaire
     
    ' Calculer le montant total à facturer (cellule G102)
    Dim montantTotal As Double
    montantTotal = poidsTotal * tarifUnitaire
    .Cells(102, "G").Value = montantTotal
    End With
    End Sub
     
    Function ObtenirTarifUnitaire(ByVal nomClient As String, ByVal typePrestation As String) As Double
    ' Insérez ici votre logique pour obtenir le tarif unitaire en fonction du nom du client et de sa prestation
    ' Par exemple, vous pouvez utiliser une table de correspondance ou une requête à une base de données
    ' Pour cet exemple, je vais simplement renvoyer un tarif unitaire fixe pour illustrer le concept
     
    Select Case nomClient
    Case "AFRICA SOURCING"
    Select Case typePrestation
    Case "Vrac"
    ObtenirTarifUnitaire = 33000 ' Tarif unitaire pour le client 1 en cas de prestation Vrac
    Case "Sac"
    ObtenirTarifUnitaire = 31500 ' Tarif unitaire pour le client 1 en cas de prestation Sac
    Case "Conventionnel"
    ObtenirTarifUnitaire = 20500 ' Tarif unitaire pour le client 1 en cas de prestation Conventionnel
    End Select
    Case "SOCAGC"
    Select Case typePrestation
    Case "Vrac"
    ObtenirTarifUnitaire = 31500 ' Tarif unitaire pour le client 2 en cas de prestation Vrac
    Case "Sac"
    ObtenirTarifUnitaire = 30000 ' Tarif unitaire pour le client 2 en cas de prestation Sac
    Case "Conventionnel"
    ObtenirTarifUnitaire = 19500 ' Tarif unitaire pour le client 2 en cas de prestation Conventionnel
    End Select
    Case Else
    ObtenirTarifUnitaire = 0#
    End Select
    End Function

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 624
    Par défaut
    Bonjour,

    Tu veux écrire dans Excel à partir d'Access, c'est cela ?

    Si oui il faut revoir les appels aux classeurs et feuilles, dans ce lien tu trouveras des interactions à partir d'Access dans Excel : https://access.developpez.com/faq/?page=Excel

    ONTAYG

  3. #3
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Par défaut
    J'aimerai avoir les deux options c'est à dire la version de mon fichier excel en version access mais le probleme je ne m'y connais pas ien access donc j'aimerai savoir s'il est possible d'avoir une assistance pour traduire ma macro utilisé le fichier excel , l'utiliser dans un fichier access si possible.
    Le problème rencontré avec mon fichier excel c'est que ma macro n'arrive pas à faire des mise à jour automatique lorsqu'il y a des modifications dans l'insertion des données.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 624
    Par défaut
    Re

    Access et Excel n'ont rien à voir ce sont des logiciels complètements différents et même si la syntaxe VBA est la même les objets (Feuilles, cellules pour Excel et table, champs et enregistrements pour Access sont complètements différents.

    La philosophie et le mode de fonctionnement des ces 2 logiciels est donc complètement différent. Donc transférer du code d'Excel à Access pour avoir la même chose n'est pas possible.

    ONTAYG

  5. #5
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Par défaut
    Alors que me proposez vous comme solution face à ce dilemme

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 624
    Par défaut
    Re

    Renseignes toi sur ce que sont les bases de données, quelques aperçus ici : https://access.developpez.com/cours/...ion#conception

    Ensuite tu pourras faire ton choix et ne connaissant pas ton projet, le type de données, la volumétrie de celles-ci, le nombre d'utilisateurs etc... que l'on n'en sera plus.

    Mais il ne faut pas partir à l'aveugle, il faut se renseigner sur les outils leurs possibilités et leurs contraintes.

    ONTAYG

  7. #7
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Par défaut
    Il y aura deux utilisateurs le projet est de matérialiser la version excel actuel en version Access c'est à dire créer un model de facturation de trois types de prestation avec pour différents clients avec différents cout unitaires en fonction du client et du type de prestation exécuté sur la base d'un montant total qui est egal à la multiplication du tarif unitaire par le poids total arrondi au chiffre supérieur. Tel est la logique.

  8. #8
    Membre émérite
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 624
    Par défaut
    Re

    Tu pars sur 2 directions différentes Excel (car vous avez une discussion en cours sur le forum Access) et Access.

    Comme je l'ai dit ce sera 2 programmes complètement différents, soit vous continuez sur Excel soit vous abandonnez pour passer sur Access.

    Le fait de parler des 2 solutions vas vous faire perdre énormément de temps et vu ce que vous annoncez Excel suffit largement.

    ONTAYG

  9. #9
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Par défaut
    Ok j'opte pour excel mais est il possible que vous y apporter des corrections à ma macro sur excel vu qu'elle presente des problemes comme je l'ai énuméré dans mon message du debut

  10. #10
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 287
    Par défaut
    Salut
    Ce n'est pas au le forum Access qu'il revient de traiter des sub() concernant Excel !
    De plus, vous occupez déjà 2 espaces sur le forum Excel ici et .
    Et si vous pouviez encapsuler votre code entre octothorpe !
    Citation Envoyé par NOSLIB Voir le message
    Ok j'opte pour excel mais est il possible que vous y apporter des corrections à ma macro sur excel vu qu'elle presente des problemes comme je l'ai énuméré dans mon message du debut

Discussions similaires

  1. Supression de macro Excel et module en VBA
    Par Sammy dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/10/2005, 10h25
  2. Macro excel perso.xls et évènement commandButton1_click()
    Par Annie dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/09/2005, 19h05
  3. [macro Excel]
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/09/2005, 09h54
  4. débutant en VBA je n'arrive pas à finir ma macro excel
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/01/2005, 12h20
  5. Porter une macro Excel vers OpenOffice
    Par totofweb dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 13/07/2004, 13h20

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