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 avec VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut probleme avec VBA
    bonjour cher developpeurs
    j(ai un probleme avec un application basée sur excel avec une interface VBA
    le code suivant c'est pour modifier un facture
    la partie en gras/ rouge est la partie concerné
    merci d'avence
    ---------------------------------
    Private Sub cmdupdate_Click()

    Feuil6.Range("M2").Value = Me.Textabider.Value

    Dim new_abider As Long
    new_abider = Val(Feuil6.Range("M2").Value) - Val(Feuil6.Range("L2").Value)
    Feuil5.Range("F1").Value = Me.Textclient.Value


    Dim client_lr As Integer
    Dim lsum As Long
    Dim vdiscond As Long

    client_lr = Feuil5.Range("G1").Value
    lsum = Application.WorksheetFunction.Sum(Feuil6.Range("I2:I1000"))
    vdiscond = Val(lsum) * Val(Me.Textdiscond.Value) / 100
    ''Feuil5.Cells(client_lr, "C").Value = Val(lsum) - Val(vdiscond)
    Feuil5.Cells(client_lr, "C").Value = Val(Feuil5.Cells(client_lr, "C").Value) + Val(lsum) - Val(vdiscond)
    Feuil5.Cells(client_lr, "E").Value = Val(Feuil5.Cells(client_lr, "E").Value) + Val(new_abider)

    '' modification du stock après la modification de facture

    Dim lfor1, pr_help3, pr_stor1 As Integer
    pr_help3 = Feuil6.Range("A100").End(xlUp).Row
    For lfor1 = 2 To pr_help3

    Feuil3.Range("N2").Value = Feuil6.Cells(lfor1, "A").Value
    pr_stor1 = Feuil3.Range("O2").Value

    Feuil3.Cells(pr_stor1, "K").Value = Val(Feuil3.Cells(pr_stor1, "k").Value) + Val(Feuil6.Cells(lfor1, "H").Value)
    Feuil3.Cells(pr_stor1, "L").Value = Val(Feuil3.Cells(pr_stor1, "L").Value) - Val(Feuil6.Cells(lfor1, "H").Value)

    Next lfor1

    ''modification feuil2 des ventes

    Dim fr1, fr2, lr1, lr2 As Integer

    lr1 = Feuil2.Range("A10000").End(xlUp).Row
    lr2 = Feuil6.Range("A").End(xlUp).Row
    For fr1 = 2 To lr1
    For fr2 = 2 To lr2



    If Feuil2.Cells(fr1, "A").Text = Me.Textnbrfc.Text And _
    Feuil2.Cells(fr1, "D").Value = Feuil6.Cells(fr2, "A").Value Then

    ''Feuil2.Range("A:L").EntireRow.Delete

    Feuil2.Cells(fr1).Delete

    lr1 = lr1 + 1
    lr2 = lr2 + 1

    End If

    Next
    Next


    Dim i, updat_invoice, updat_product As Integer
    updat_invoice = Feuil2.Range("A10000").End(xlUp).Row + 1
    updat_product = Feuil6.Range("A100").End(xlUp).Row

    For i = 2 To updat_product

    Feuil2.Cells(updat_invoice, "A").Value = Me.Textnbrfc.Value
    Feuil2.Cells(updat_invoice, "B").Value = Format(Me.Textdate.Value, "dd/mm/yyyy")
    Feuil2.Cells(updat_invoice, "C").Value = Me.Textclient.Value

    Feuil2.Cells(updat_invoice, "H").Value = Me.Textsubtotal.Value
    Feuil2.Cells(updat_invoice, "I").Value = Me.Textdiscond.Value
    Feuil2.Cells(updat_invoice, "J").Value = Me.Texttotal.Value
    Feuil2.Cells(updat_invoice, "k").Value = Me.Textpaid.Value
    Feuil2.Cells(updat_invoice, "L").Value = Me.Textabider.Value

    '''information variable

    Feuil2.Cells(updat_invoice, "D").Value = Feuil6.Cells(i, "A").Value
    Feuil2.Cells(updat_invoice, "F").Value = Feuil6.Cells(i, "B").Value
    Feuil2.Cells(updat_invoice, "G").Value = Feuil6.Cells(i, "C").Value
    updat_invoice = updat_invoice + 1

    Next i

    'Dim total_data As Range
    'Dim colm_stor As Range
    'Set total_data = Worksheets("vente").Range("A:L")
    'Set colm_stor = Worksheets("vente").Range("A:A")

    'total_data.Sort key1:=colm_stor, order1:=xlAscending, Header:=xlYes


    ThisWorkbook.Save

    MsgBox "modifier avec succé ", vbInformation + vbMsgBoxRight + vbMsgBoxRtlReading, "confirmation"

    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Vous dites avoir un problème mais vous ne précisez pas lequel.
    A la lecture de votre code, j'ai cru deviner que certaines lignes n'étaient pas supprimées.
    Cas classique, votre boucle doit commencer à la dernière ligne et remonter vers la première.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Vous dites avoir un problème mais vous ne précisez pas lequel.
    A la lecture de votre code, j'ai cru deviner que certaines lignes n'étaient pas supprimées.
    Cas classique, votre boucle doit commencer à la dernière ligne et remonter vers la première.


    la partie en rouge c'est laquelle qui m'a provoqué

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    la partie en rouge c'est laquelle qui m'a provoqué
    Avez-vous lu et compris ma réponse ?

    Au lieu de For fr1 = 2 To lr1, il faut écrire For fr1 = lr1 to 2 Step -1 et c'est valable pour votre autre boucle
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Par défaut ne fonctionné pas
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Avez-vous lu et compris ma réponse ?

    Au lieu de For fr1 = 2 To lr1, il faut écrire For fr1 = lr1 to 2 Step -1 et c'est valable pour votre autre boucle
    d'abord merci pour votre reponse
    mais ça marche pas avec moi

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    "ça ne marche pas" ne nous fera pas avancer dans la recherche de votre problème.
    Je vous ai écrit dès le début que vous n'expliquez quel est votre souci. Nous dire où cela se passe n'est pas une explication complète.
    Vous aurez peu de chance d'être guéri si vous dites à un médecin en désignant votre estomac que c'est là où vous avez mal.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Nouveau candidat au Club
    Homme Profil pro
    Etudiant en reconversion
    Inscrit en
    Mars 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant en reconversion
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 3
    Par défaut Je n'arrive pas à utiliser ce code générer par chatgpt
    Bonjour a tous

    J'utilise ce code que chat Gpt m'a fourni mais ca ne fonctionne pas (je n'y connais rien en VBA ) voici le code

    Sub feuill4Croisement()

    Dim traite As Range, traiteL As Long, traiteC As Long, valeurA As String, valeurB As String, _
    valeurG As Range, i As Long, j As Long

    Set traite = Feuil4.Range("A11017") 'plage de données à traiter
    traiteL = traite.Rows.Count 'nombre de lignes de la plage de données à traiter
    traiteC = traite.Columns.Count 'nombre de colonnes de la plage de données à traiter

    For i = 1 To traiteL 'parcours des lignes de la plage de données à traiter
    valeurA = Feuil4.Cells(i, 1).Value 'valeur de la colonne A de la ligne en cours de traitement
    valeurB = Feuil4.Cells(i, 2).Value 'valeur de la colonne B de la ligne en cours de traitement
    Set valeurG = Nothing 'réinitialisation de la variable valeurG

    'recherche de la valeur dans la colonne D de la plage de données
    For j = 1 To traiteL
    If traite.Cells(j, 4).Value = valeurB Then
    Set valeurG = traite.Cells(j, 4)
    Exit For
    End If
    Next j

    'écriture de la valeur trouvée dans la colonne C de la ligne en cours de traitement
    If Not valeurG Is Nothing Then
    Feuil4.Cells(i, 3).Value = valeurG.Value
    End If
    Next i

    End Sub






    Dans un deuxième temps je vous joint ce que j'ai demandé a chatgpt

    Voila ce que je t ai demandé
    D'abord je vais te parler des valeurs des cellules que je veux traiter : c'est du texte qui se compose comme suit : A-A01-01-0,j'ai 1017 lignes qui comportent ce genre de valeur qui varie seulement entre les lettres et les chiffres.Ensuite mon tableau avec ces données est composé de la colonne A "Ancien emplt" où ma valeur décrite précédemment est entrée,puis la colonne B "Code article", la colonne C "Produit" et la colonne D " Nouvel emplt" où le même type de valeur que la colonne A est entrée, Toutes les lignes ont des valeurs dans les colonnes a jusqu'à a E, ce que je veux faire c'est créer en G et en H un croisement de valeurs où la valeur qui est en G1 correspond à la valeur de A1 et H1 à D1 et puis en G2 retrouver la valeur de H1 et me renvoyer en H2 la valeur correspondante à G2 trouvée en D et ainsi de suite jusqu'à avoir traité les valeurs des lignes 1 à 1017, il y a 2 conditions à respecter la première ne traiter qu'une seule fois chaque valeurs des lignes 1 à 1017 donc toutes pas reprendre une valeur déja traitée dans la colonne G avant la cellule en question et deuxièmement si la valeur de H n'est pas retrouvée dans la cellule G alors prendre une autre valeur de la colonne A et toujours en prenant en compte la première condition que je t'ai donnéeune seule fois chaque valeurs des lignes 1 a 1017 donc ne pas reprendre une valeur déja traitée dans la colonne G avant la cellule en question et deuxièmement si la valeur de H n'est pas retrouvée dans la cellule G alors prendre une autre valeur de la colonne A et toujours en prenant en compte la première condition que je t'ai donnéeune seule fois chaque valeurs des lignes 1 a 1017 donc ne pas reprendre une valeur déja traitée dans la colonne G avant la cellule en question et deuxièmement si la valeur de H n'est pas retrouvée dans la cellule G alors prendre une autre valeur de la colonne A et toujours en prenant en compte la première condition que je t'ai donné


    Et pour compléter je joins le fichier sur lequel je travaille[ATTACH]635624
    Fichiers attachés Fichiers attachés

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Je ne ferait pas confiance à une IA pour génerer un code source ...

  9. #9
    Nouveau candidat au Club
    Homme Profil pro
    Etudiant en reconversion
    Inscrit en
    Mars 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant en reconversion
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 3
    Par défaut Demande
    Bonjour à vous
    Est ce que vous avez une solution à me proposer??
    Car je fais appel à une IA car j ai besoin d exécuter cette tâche mais n y arrive pas avec mes connaissances

    Merci à vous

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Quand tu passe par la collection Cells, ce sont les coordonnées de le cellule visée que tu dois donner en paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Feuil2.Cells(5, 9)    '// Ok, cellule ligne 5, colonne 9
    Feuil2.Cells(5, "A")    '// Ko, A n'est pas un nombre

  11. #11
    Nouveau candidat au Club
    Homme Profil pro
    Etudiant en reconversion
    Inscrit en
    Mars 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant en reconversion
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2023
    Messages : 3
    Par défaut 😬😬😬
    J ai pas tout compris lol j ai juste ce code a entrer rien d autre??

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Ben non.

    Il faut comprendre ton erreur et adapter à ce que tu as fait.

  13. #13
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Je ne ferait pas confiance à une IA pour génerer un code source ...
    Je ne vois pas trop ce que la confiance vient faire là.
    Tu exposes une demande à l'IA, elle t'écrit un code que tu testes, bien évidemment, s'il fonctionne du premier coup c'est parfait, s'il y a une erreur tu corriges.
    Moi je l'utilise régulièrement et ça me fait gagner beaucoup de temps.
    Par contre, là où je ne ferais pas confiance, c'est sur des conseils d'investissement en bourse par exemple.
    Pour du code VBA je ne vois pas où il y a problème.

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Bien que ce soit meilleur que ce que beaucoup osent pondre, sur le petit exemple que tu as fourni, on peut déja citer:
    - Lisibilité discutable.
    - Noms de variables approximatifs.

    Sur des trucs plus complexe, j'ai des craintes.

  15. #15
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Bien que ce soit meilleur que ce que beaucoup osent pondre, sur le petit exemple que tu as fourni, on peut déja citer:
    - Lisibilité discutable.
    - Noms de variables approximatifs.

    Sur des trucs plus complexe, j'ai des craintes.
    Le résultat est toujours fonction de la demande de l'utilisateur.
    Perso, je demande toujours de formater le code de façon claire et lisible, avec utilisation d'indentations et d'espacements.
    Quant aux variables, c'est moi qui les nomme, ensuite je précise l'utilisation qui va en être faite.
    Je lis parfois sur le forum des problèmes à peine compréhensibles, donc si tu l'exposes tel quel à une IA, j'ai peur du résultat
    Donc le mot d'ordre pour une bonne utilisation d'IA, c'est clarté et précision. (et un minimum de connaissance de VBA pour corriger les éventuels problèmes)

Discussions similaires

  1. Probleme avec vba
    Par Rémick25 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/12/2010, 11h14
  2. probleme avec vba
    Par David1259 dans le forum VBA Access
    Réponses: 5
    Dernier message: 03/01/2009, 10h50
  3. [VBA WORD] Probleme avec un .dot
    Par jagdjg dans le forum VBA Word
    Réponses: 6
    Dernier message: 18/01/2006, 11h07
  4. Probleme avec FtpGetFileSize en VBA
    Par marot_r dans le forum Contribuez
    Réponses: 2
    Dernier message: 12/12/2005, 16h06
  5. [VBA-E] problème avec le sendkeys
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/02/2005, 14h25

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