Excel Macro traitement de numéros (suite) :)

Résolu/Fermé
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 - 30 déc. 2009 à 13:30
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 - 5 janv. 2010 à 08:41
Re-bonjour à tous,

Bon ce matin je me suis un peu égaré et posté mes problèmes dans un mauvais ordre mais on a quand même réussi merci à pijaku,moiced59 et Michel_m et tous les autres pour leur patience. . .bon j'ai pris le temps de bien développer le but de mon fichier et tout et tout j'espere avoir mieux orienté le sujet cette fois:

Alors voilà dans la finalité comment je vois marcher mon fichier : je l’ouvre, je lance l’USF (il compte les trous) je vois où il y a de la place (dans les serie 8000,9000 . . . ), je demande la première place libre dans la série choisie, je l’utilise il s’ajoute donc dans la liste et à la place correspondante.

Et voilà comment est fait mon fichier :

J’ai 25 onglets, un qui contient tous les numéros existants (plus trop utile mais bon) et la liste des séries, que j’utilise dans l'USF. Dans chaque autres onglet il y a les numéros triés de chaque série 8000,9000 . . .chacun peut contenir 1000 numéros maxi de 8000 à 8999,de 9000 à 9999 qui seront donc toujours inscrit dans la plage A1 :A1000, le problème c’est que les liste comporte des trous on peut par exemple avoir 8523-8525 (1 saut) ou pire 8523-8533 (10 sauts plus à certain endroits) dans certain onglet j’ai la cellule A1 vide car la liste peut commencé à 8001 ou pire 9400 auquel cas je place le numéro en question à la ligne correspondante A401 pour 9400 par exemple. Le but est d’insérer autant de cellules vides que de numéros manquant entre 2, ensuite c’est là qu’il me faut faire le comptage pour savoir combien de place dispo dans tel ou tel série (via un affichage en TxtBox sur mon USF) et au final j’ouvre mon USF vois qu’il y a de la place en 9000 je demande quel est le premier numéro libre et bam ma macro me le donne (ça j’ai réussi j’ai fai un test) et si je l’utilise et bien crac ça inscrit le numéro à son emplacement le comptage se met à jour une place de moins dans la série des 9000 .

Voilà n'hésitez pas si besoin plus d'infos. . . .c'est vraiment pas facil d'ecrire ce qu'on a dans la tete :s

Meric d'avance



A voir également:

32 réponses

Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
31 déc. 2009 à 14:30
Bonjour,
Comme expliqué au poste 25 dont voici la procédure:
Sub CherchePremier(numserie)
Dim y As Long
'trier la liste
Columns("A:A").Sort Key1:=Columns(1), Order1:=xlAscending, Header:=xlGuess
For y = 1 To WorksheetFunction.Count(Columns(1))
    If Cells(y, 1) <> numserie + (y - 1) Then
        z = numserie + (y - 1)
        Exit Sub
    End If
Next y
End Sub
--

Salutations.
Jean-Pierre
1
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
31 déc. 2009 à 15:14
Bonjour,
Petite explication pas par pas de la procédure (P = procédure et E = explication) :
P.- Sub CherchePremier(numserie)
E.- nom de la procédure avec argument (numserie) qui récupère le numéro de série de la valeur de la UserForm

P.- Columns("A:A").Sort Key1:=Columns(1), Order1:=xlAscending, Header:=xlGuess
E.- Trier la colonne pour l’ordonner et éliminer les vides éventuels

P.- For y = 1 To WorksheetFunction.Count(Columns(1))
E.- Boucle sur la colonne pour la plage de valeur présente la dernière ligne est trouvé avec ; [WorksheetFunction.Count(Columns(1))]

P.- If Cells(y, 1) <> numserie + (y - 1) Then
z = numserie + (y - 1)
Exit Sub
End If
E.- Contrôle si le numéro de la colonne est différent du compteur
Si oui alors on attribue le numéro à la variable [Z] qui sera reprise dans la procédure pour la UserForm.et le [Exit Sub] sort de la procédure puisque le numéro est trouvé
Si non le [Next y] renvoie au début de la boucle.
Pour finir End Sub.
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
30 déc. 2009 à 13:50
Ce que tu viens de décrire n'est pas du tout le ou les m^mes problèmes...
Aurait on bosser pour rien ?
0
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
30 déc. 2009 à 14:00
non du tous les autres problèmes été le début de mon projet et concerné le meme fichier, mais je m'y été mal pris là je résume le projet le reste est bel est bien réglé grace à vous tous, en faite j'ai tendance à attaquer un truc je me dis comment je fais.... hop j'ai une idée en tete, j'attaque je tombe sur un "os" et je me trouve bloqué j'essaye de le resoudre sur ccm et en attendant je part sur autre chose et je me retrouve bloqué encore une fois j'essaye de ne pas trop vous embéter alors je pose des problèmes au compte goutte alors que je devrais exposer mon projet et demander conseil avant d'attquer comme me la soufflé pijaku. c'est que j'apprend vraiment à l'arrache le VBA, je n'ai suivi aucun cours, je n'ai comme base les seules macro que j'ai dejà faite en partie sur CCM, donc meme si parfois je comprends certain cheminement d'autres me parraisse incomprehenssible. . . .

0

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 303
30 déc. 2009 à 14:23
Donc, on a bien bossé pour rien...malgré les conseils de Pijaku.
Prend pas ca mal, mais tu me fais penser à une abeille contre la vitre....
Si tu veux apprendre commence par des problèmes simples et progresse petit pas par petits pas

si j'ai compris(...) ta demande
TU écris un nombre (peu importe comment)
la partie entière du nombre/1000 te donne le préfixe de ton onglet
les noms d'onglet étant du texte il faut transformer le nombre en "strIng"
sheets(cstr(int(tonnombre/1000))*1000)

la partie décimal du nombre cad le modulo 1 du nombre te donne la ligne du nombre -1 (ligne1 on a 12000 par ex)
donc la ligne est déterminée par
(tonnombre/1000 MOdulo 1)+1

lig=((tonnombre/1000) MOD 1)+1

et tu as donc
sheets(cstr(int(tonnombre/1000))*1000).cells(lig,1)=tonnombre

non testé
0
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
30 déc. 2009 à 14:34
euuuuuh non vous avez pas bossé pour rien j'ai résolu certain des problème et par contre oui le dernier code que tu as posté est arrivé trop tard j'avai "retourné ma veste " à la manière de jacques dutronc lol et pris la décision de faire les choses à la main mais j'ai gardé ton code car je risque de devoir traité une autre extreaction.

pour ce que tu viens de me dire euuuh je t'avourai que j'ai pas compris grand chose, exépté le fait que mon post n'est pas plus clair que les autres :s, car tu n'as (et ne le prned pa smal non plus) apparement pas saisi le truc, et donc histoire de ne pas vous faire bosser pour des pruneaux et de ne pas me retrouver ecrasé sur un carreaux tel une abeille :) je pense que je vais poster le fichier en question ce soir, vous aurez ainsi tout le plaisir de mieux saisir mon objectif. . .

Le menu se lance avec un ptit Ctrl+m je vais mettre un onglet "mode d'emploi" pour refaire un exposé de ce que je recherche . . .

Pour ce qui est de l'apprentissage, ben j'essaye de faire ce qu'on me demande ma situation est "complexe" j'était dans la mécanique, je suis réformé donc dans les bureaux, et ayant fais une formation de technicien d'assistance informatique mes employeur pense que je suis !!""INFORMATICIEN""!! donc je sais faire un jeux video,un logiciel,construire un CPU aussi tant qu'on y est enfin bref . . .plein de bonne volonté j'essaye comme je peux d'arriver à faire les outils qu'on me demande mais je reste conscient que sans CCM (vous) . . . .peux de ces outils marcherai c'est pourquoi je remerci souvent et encore toute la communauté CCM
0
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
30 déc. 2009 à 20:18
re bonsoir voilà mon fichier j'espere qu'il vous aidera plus que mes explication. . . .


https://www.cjoint.com/?mEustuddZj
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
30 déc. 2009 à 20:36
BON ALLEZ C PARTI JE REGARDE CA§§
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
30 déc. 2009 à 21:13
ca avance g presque fini!!!!
0
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
30 déc. 2009 à 21:37
nan deja ???? pfiou j'en attendais pas temps ;)
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
30 déc. 2009 à 21:53
j suis dessus ya d petit bugg!!
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
30 déc. 2009 à 22:10
Bonjour,
J'ai juste donné un oeil en diagonal et il ressort que les nombres disponibles dans une série semblent correctes.
Par contre la recherche du premier numéro disponible est incorrecte : exemple avec la série 8000, je peux sans autre obtenir des nouveaux numéros de 9000, 9001, 9002, et se qui est faux.
Je ne peux pas en faire plus pour l'instant.
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
30 déc. 2009 à 22:46
ca y est g fini!!!!
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
30 déc. 2009 à 22:53
voila :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijEjXoVr2.xls

je t mis un bouton sur chaque feuille pour executer la macro1 je me suis arreter au 18

voila bonne nuit dis moi si tu est content?
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
30 déc. 2009 à 23:27
Bonsoir,
Je me suis amusé un peu, je vous laisse la découverte : https://www.cjoint.com/?mExAAHO1nC
0
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
31 déc. 2009 à 07:48
Re bonjour le pingou (j'ai répondu à l'autre post), et bonjour moiced59,

Euh Le Pingou pour votre post N°10 je ne comprend pas j'ai testé chez moi avant d'envoyer et celà marchait et me donnai 8001 en premier numéro dispo. . . donc moi pas comprendre :s après je sais que j'avais le problème quand la cellule A1 été vide ma macro buguée bien entendu. . . .

Donc pour ce qui est de vos essais étant donné que je suis au travail et que je ne peux pas cjointer et que ce soir j'ai une ptite fete prevu ;) ( vodka malabard,ricard,champagne,bière et je crois qu'il y a mangé. . . lol) je regarderai ça en 2010 maintenant mais je vous remerci déjà à l'avance car je ne doute pas de trouver 2 fichiers fonctionnels et n'aurait plus qu'à choisir lequel me convient le mieux ou prendre un peu des 2 qui sait. . ..

Je vous remerci pour toute l'aide apportée en 2009, vous souhaite un bon réveillon et n'oubliez pas: boire ou conduire il faut choisir moi conduire je trouve ça fatiguant :)) de plus l'alcool est un ennemi fuire l'ennemi c'est lâche . . . lool
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
31 déc. 2009 à 09:41
Bonjour :
En réponse à ceci : Euh Le Pingou pour votre post N°10 je ne comprends pas j'ai testé chez moi avant d'envoyer et cela marchait et me donnai 8001 en premier numéro dispo . . . donc moi pas comprendre : s
Moi non plus je ne comprends pas pourquoi vous ne poursuivez pas le test plus loin. Ainsi vous constateriez par vous-même et comprendriez l’avertissement de mon message.

Pour poursuivre dans se sens, sauf erreur de ma part, la proposition de moiced59 ne tiens pas compte des numéros qui peuvent manquer dans une série.
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 déc. 2009 à 09:49
bonjour
j'ai regarde ton fichier le pingou tu as fais koi?
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
31 déc. 2009 à 10:27
Bonjour moiced59,
C'est quoi la question ?
0
informatifien Messages postés 741 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 10 janvier 2016 92
31 déc. 2009 à 09:52
pour les fichiers je ne pourrait regarder que demain ou après demain, pour les test je n'ai pas voulu aller trop vite, comme je l'ai dis je part un peu trop vite sur les projets et veux tout faire en meme temps. . .

et ce par ce que je n'ai aucune bonne base, j'ai demandé une formation à mon taf car je trouve le VBA intéréssant mais dur. . . .que faite vous tous dans la vie? si ce n'est pas indiscret du VBA toute la journée dans une SSII ou dans une société?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
31 déc. 2009 à 09:58
re

moi je travail ds une usine automobile service info mais je ne fé pas du vba tte la journée!!!!!
et toi tu fé koi?
0