Macro à améliorer
Résolu/Fermé
A voir également:
- Macro à améliorer
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Macro recorder - Télécharger - Confidentialité
- Améliorer réception fm maison - Forum Audio
5 réponses
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
27 nov. 2012 à 18:19
27 nov. 2012 à 18:19
Bonjour,
Par contre je n'arrive pas à la finaliser, je souhaiterais intégrer l'équivalent d'un rechercheV sur "Cells(lig,14)" : au lieu d'afficher le code à 5 chiffres comme c'est le cas actuellement Je ne comprends pas trop, car si vous voulez le libelle: prenez cells(lig,15) de la meme feuille OC et si vous voulez prendre le libelle dans la feuille Libelle assurez vous que tout les codes soient repertories, 78459 SACOCHE RA n'existe pas dans Libelle.
A+
Par contre je n'arrive pas à la finaliser, je souhaiterais intégrer l'équivalent d'un rechercheV sur "Cells(lig,14)" : au lieu d'afficher le code à 5 chiffres comme c'est le cas actuellement Je ne comprends pas trop, car si vous voulez le libelle: prenez cells(lig,15) de la meme feuille OC et si vous voulez prendre le libelle dans la feuille Libelle assurez vous que tout les codes soient repertories, 78459 SACOCHE RA n'existe pas dans Libelle.
A+
La feuille libellé à été rajoutée ce jour et en cours de construction car celles(lig,15) n'est pas assez synthétique et explicite
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 27/11/2012 à 18:44
Modifié par michel_m le 27/11/2012 à 18:44
Bonsoir
à insérer dans ton code
Tu as des doublons dans ta liste de libellé d'où obligation du test avant dico.add, dommage ( ligne 474 par ex)
Pour ton histoire de 2 minutes, il faudrait que tu passes OcC en 1 ou plusieurs variable-tableauX
Michel
à insérer dans ton code
Dim dico As Object Dim derlig As Integer, cptr As Integer Set dico = CreateObject("scripting.dictionary") With Sheets("Libellé") derlig = .Columns("A").Find("*", , , , , xlPrevious).Row For cptr = 2 To derlig If Not dico.exists(.Cells(cptr, "A").Value) Then dico.Add .Cells(cptr, "A").Value, .Cells(cptr, "B").Value End If Next End With Cells(lig2, 34) = Cells(lig2, 34) & Cells(lig, 17) & "x" & dico.Item(Cells(lig, 14) * 1) & ", " 'concaténation
Tu as des doublons dans ta liste de libellé d'où obligation du test avant dico.add, dommage ( ligne 474 par ex)
Pour ton histoire de 2 minutes, il faudrait que tu passes OcC en 1 ou plusieurs variable-tableauX
Michel
Bonsoir,
je viens de tester et j'ai le résultat voulu.
demain je pourrai poursuivre la feuille Libellé en supprimant les doublons, je voulais être sûr que la macro soit ok pour travailler sur cette liste.
la feuille OC contient des données collées d'une extraction d'un logiciel GPAO, d'où le format des cellules qui est considéré comme du texte.
comment cela se traduit il en 1 ou plusieurs variable-tableaux ?
en tous les cas merci pour ce code, je vais pouvoir conserver quelques cheveux ^^
je viens de tester et j'ai le résultat voulu.
demain je pourrai poursuivre la feuille Libellé en supprimant les doublons, je voulais être sûr que la macro soit ok pour travailler sur cette liste.
la feuille OC contient des données collées d'une extraction d'un logiciel GPAO, d'où le format des cellules qui est considéré comme du texte.
comment cela se traduit il en 1 ou plusieurs variable-tableaux ?
en tous les cas merci pour ce code, je vais pouvoir conserver quelques cheveux ^^
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 nov. 2012 à 05:55
28 nov. 2012 à 05:55
Bonjour,
comment cela se traduit il en 1 ou plusieurs variable-tableaux ?
je vais regarder mais il faut que je comprenne ce que tu veux faire...
comment cela se traduit il en 1 ou plusieurs variable-tableaux ?
je vais regarder mais il faut que je comprenne ce que tu veux faire...
Bonjour,
au quotidien, nous utilisons 6 caractères pour ce qui correspond à la colonne C et 5 caractères pour le code produit (colonne N)
Quand le planning est construit chaque jour, c'est donc 6 et 5 caractères qui sont tapés et qui parlent à tout le monde.
Par contre la GPAO génère 8 caractères et donc rajoute des 0 devant. Personne ne tapera ces 0 et du coup je dois convertir au moins ces 2 colonnes pour les rendre au format "classique".
au quotidien, nous utilisons 6 caractères pour ce qui correspond à la colonne C et 5 caractères pour le code produit (colonne N)
Quand le planning est construit chaque jour, c'est donc 6 et 5 caractères qui sont tapés et qui parlent à tout le monde.
Par contre la GPAO génère 8 caractères et donc rajoute des 0 devant. Personne ne tapera ces 0 et du coup je dois convertir au moins ces 2 colonnes pour les rendre au format "classique".
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 nov. 2012 à 08:04
28 nov. 2012 à 08:04
Re,
1/ concernant les 8 caractères de la GPAO avec les zéros devant (donc un string) il suffit de multiplier la cellule par 1 pour passer en nombre sans les zéros devant
2/ le montant est cumulé ligne après ligne ou doit il être indiqué pour chaque N° document?
1/ concernant les 8 caractères de la GPAO avec les zéros devant (donc un string) il suffit de multiplier la cellule par 1 pour passer en nombre sans les zéros devant
2/ le montant est cumulé ligne après ligne ou doit il être indiqué pour chaque N° document?
le montant doit être cumulé ligne après ligne comme actuellement.
la macro fusionne les même numéro de la colonne C et en compilant pour chaque ligne de ce même numéro, la quantité x le code de la colonne N.
j'ai une autre question, en colonne S les dates sortent sous le format aaaammjj, comment faire pour obtenir sur toute la colonne le format jj/mm/aaaa ?
la macro fusionne les même numéro de la colonne C et en compilant pour chaque ligne de ce même numéro, la quantité x le code de la colonne N.
j'ai une autre question, en colonne S les dates sortent sous le format aaaammjj, comment faire pour obtenir sur toute la colonne le format jj/mm/aaaa ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 nov. 2012 à 11:54
28 nov. 2012 à 11:54
re
Ci joint proposition avec variable tableau en module 2
durée avec Ram 512 Mo: env. 1,5 sec
https://www.cjoint.com/?3KClXpp4pXp
j'ai laissé en commentaire la méthode avec cellules pour compréhension et suivi
de m^me de commentaires pour ce que je croyais être le calcul des montants
Des oublis et doublon signalés en rouge dans la feuille libellé
Ci joint proposition avec variable tableau en module 2
durée avec Ram 512 Mo: env. 1,5 sec
https://www.cjoint.com/?3KClXpp4pXp
j'ai laissé en commentaire la méthode avec cellules pour compréhension et suivi
de m^me de commentaires pour ce que je croyais être le calcul des montants
Des oublis et doublon signalés en rouge dans la feuille libellé
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 nov. 2012 à 14:00
28 nov. 2012 à 14:00
Pour convertir en date
renvoie le n° de série
mettre les colonnes au format-nombre-date (aujourd'hui 29121128 renvoie 41241)
Function Convertir_en_date(aaaammjj As String) As Date Convertir_en_date = CDate(Right(aaaammjj, 2) & "/" & Mid(aaaammjj, 5, 2) & "/" & Left(aaaammjj, 4)) End Function
renvoie le n° de série
mettre les colonnes au format-nombre-date (aujourd'hui 29121128 renvoie 41241)
j'avoue c'est assez complexe de décortiquer un code tout fait.
Le montant se calcule en cumulé de chaque ligne visiblement avec ton code. Le montant recherché est celui correspondant à chaque même numéro de document (colonne C)
et quand on tombe sur un nouveau document, le montant retombe à 0.
ex pour le 168369 >> montant = 13726 (avec les arrondis)
168368 >> montant 6797
168366 >> 2277
....
je ne sais pas trop quoi changer pour retomber sur mes pieds sans générer d'instabilité ou bug
Pour le format date, j'avais trouvé ça
'imposer le format date sur la colonne S
Dim j As Integer
Dim st As String
Dim dte As Date
j = 1
Columns("S:S").Select
With ActiveCell
Do Until IsEmpty(.Offset(j, 0))
st = Format(.Offset(j, 0).Value, "00000000")
If st = "00000000" Then
.Offset(j, 0).ClearContents
Else
dte = CDate(Right(st, 2) & "/" & Mid$(st, 5, 2) & "/" & Left$(st, 4))
.Offset(j, 0).Formula = dte
End If
j = j + j
Loop
End With
Le montant se calcule en cumulé de chaque ligne visiblement avec ton code. Le montant recherché est celui correspondant à chaque même numéro de document (colonne C)
et quand on tombe sur un nouveau document, le montant retombe à 0.
ex pour le 168369 >> montant = 13726 (avec les arrondis)
168368 >> montant 6797
168366 >> 2277
....
je ne sais pas trop quoi changer pour retomber sur mes pieds sans générer d'instabilité ou bug
Pour le format date, j'avais trouvé ça
'imposer le format date sur la colonne S
Dim j As Integer
Dim st As String
Dim dte As Date
j = 1
Columns("S:S").Select
With ActiveCell
Do Until IsEmpty(.Offset(j, 0))
st = Format(.Offset(j, 0).Value, "00000000")
If st = "00000000" Then
.Offset(j, 0).ClearContents
Else
dte = CDate(Right(st, 2) & "/" & Mid$(st, 5, 2) & "/" & Left$(st, 4))
.Offset(j, 0).Formula = dte
End If
j = j + j
Loop
End With
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 28/11/2012 à 16:32
Modifié par michel_m le 28/11/2012 à 16:32
re,
Pour le montant, il me semble bien te l'avoir fait remarqué car ton code tu n'avais pas réinitialisé la variable "Montant"( pas grave)
et pendant qu'on en parle, faut il multiplier la quantité par le montant net (Q par R) ?
Pour les dates tu n'as pas que la colonne S qui en date: il y a aussi T,U et X et peut d'autre que je n'ai pas vu: que fait-on ? je ne sais pas ce que tu fais de ces dates mais peut-^tre pourrait on se contenter de laisser le N° du jour comme aujourd'hui 41241; tu dis
en regardant un peu, j'ai vu qu'il s'agissait de nombre alors que je croyais du texte donc la fonction est nase
je regarderai un code après tes réponses
Pour le montant, il me semble bien te l'avoir fait remarqué car ton code tu n'avais pas réinitialisé la variable "Montant"( pas grave)
et pendant qu'on en parle, faut il multiplier la quantité par le montant net (Q par R) ?
Pour les dates tu n'as pas que la colonne S qui en date: il y a aussi T,U et X et peut d'autre que je n'ai pas vu: que fait-on ? je ne sais pas ce que tu fais de ces dates mais peut-^tre pourrait on se contenter de laisser le N° du jour comme aujourd'hui 41241; tu dis
en regardant un peu, j'ai vu qu'il s'agissait de nombre alors que je croyais du texte donc la fonction est nase
je regarderai un code après tes réponses
Ah oui je viens de relancer ma macro et effectivement je faisais du cumulé ... autant pour moi, je n'avais pas vu cette erreur
le montant net (R) qui apparaît sur chaque ligne est le résultat de la quantité par le prix unitaire. Pas de multiplication Q par R à réaliser. Il "reste" à sommer chacun de ces montants nets pour chaque numéro de la colonne C.
La colonne S est la colonne qui sert à faire les mises à jour quotidiennes du tableau "planning_2", si on met au format 41241 ça n'est pas parlant pour l'utilisatrice, il faut avoir un format jj/mm/aaaa pour la convivialité (elle utilise actuellement la macro copiée plus haut)
merci de la réactivité et de ta patience
le montant net (R) qui apparaît sur chaque ligne est le résultat de la quantité par le prix unitaire. Pas de multiplication Q par R à réaliser. Il "reste" à sommer chacun de ces montants nets pour chaque numéro de la colonne C.
La colonne S est la colonne qui sert à faire les mises à jour quotidiennes du tableau "planning_2", si on met au format 41241 ça n'est pas parlant pour l'utilisatrice, il faut avoir un format jj/mm/aaaa pour la convivialité (elle utilise actuellement la macro copiée plus haut)
merci de la réactivité et de ta patience
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
28 nov. 2012 à 18:52
28 nov. 2012 à 18:52
et voilà, en espèrant que...
https://www.cjoint.com/?3KCsZTP7HBE
https://www.cjoint.com/?3KCsZTP7HBE
Bonjour,
en colonne AF de la feuille OC, tu as intégré "nbre_doc" et le nombre en dessous.
les données de cette feuille vont être quotidiennement écrasées, du coup ces 2 cellules aussi et j'ai testé en effaçant ces 2 cellules et la macro plante. j'ai tenté de résoudre en vain ... que faut il faire pour qu'il n'y ait pas d'impact sur la macro lorsqu'on écrase les données de la feuille OC ?
en colonne AF de la feuille OC, tu as intégré "nbre_doc" et le nombre en dessous.
les données de cette feuille vont être quotidiennement écrasées, du coup ces 2 cellules aussi et j'ai testé en effaçant ces 2 cellules et la macro plante. j'ai tenté de résoudre en vain ... que faut il faire pour qu'il n'y ait pas d'impact sur la macro lorsqu'on écrase les données de la feuille OC ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
29 nov. 2012 à 17:39
29 nov. 2012 à 17:39
bonjour,
La cellule AF4 étant nommée, de mémoire "nbre_doc" tu peux la déplacer ou tu veux dans la feuille.
attention: c'est une formule matricielle
"au cas où" tu ne connaitrais pas ces animaux:
Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule; Excel encadre alors automatiquement la formule par des {}
La cellule AF4 étant nommée, de mémoire "nbre_doc" tu peux la déplacer ou tu veux dans la feuille.
attention: c'est une formule matricielle
"au cas où" tu ne connaitrais pas ces animaux:
Formule matricielle à valider par « ctrl+maj+entrée » (et non directement par « entrée »), le curseur clignotant dans la barre de formule; Excel encadre alors automatiquement la formule par des {}
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
29 nov. 2012 à 19:00
29 nov. 2012 à 19:00
tu peux aussi faire un couper-coller dans une autre-feuille