Probleme pour finir les codes VBA
Bonjour,
Je suis bloqué pour faire ce que je veux faire
j'ai essayer de détailler mes soucis au plus près de ce que je voudrais et j'ai décris au mieux comment il fonctionnais
le fichier sert a faire des classement pour une course
Detail des deux classeurs utilisées
-PREMIER CLASSEUR -->un ordinateur sert au concurrent pour qu'il s'inscrive a l'aide d'un userform (voir classeur "Baseinscr", feuille "debutinscr" puis bouton Nouvelle inscription) le concurrent démarre et à accès seulement au userform (il ne peux pas le fermer il n'a pas le mot de passe)
Donc il s'inscrit ça j'ai a peu près reussi a tout faire fonctionner a part le plein ecran automatique suivant la résolution de l'écran.
la feuille "Basedonnees" de ce classeur sert au concurrent qui es licencié a ne pas tout retaper ces infos. il sert uniquement a cela
mais ensuite les champ rempli du USERFORM enregistre les données dans Feuil2.
ce classeur sert au concurrent pour s'inscrire mais pas seulement, nous on va s'en servir pour avoir la base donnée (Feuil2") et l'importer vers un classeur que j'ai appelé Base_YENNE.
- SECOND CLASSEUR --> Dans la Feuille Base YENNE du classeur Base_YENNE Je voudrais récupérer une partie de la Feuil2 du Classeur Baseinscr (c'est a dire de la ligne 7 a la derniere ligne du dernier concurrent inscrit et de la colonne B à la colonne W pour cela que j'avais mit 6000 mais apparemment il existerait une formule qui prendrait seulement les lignes inscrite)
la ligne 1,2 et 3 ne doivent pas être touchée ainsi que la colonne A.
une fois l'importation faite du premier classeur a ce classeur il faut qu'il enlève toute les lignes avec un 1 dans YENNE (colonne S) (cela signifie que le concurrent c'est inscrit pour cette courses et que l'on a pas besoin des autres) SAUF les lignes 1,2 et 3.
dans la feuille "Base Canicross" il faudra faire l'importation de la Feuille "Base YENNE" de ce classeur en enlevant toute les lignes qui ont un M ou un V et garder que les lignes avec un C (qui correspond a la course canicross) dans la colonne R mais sans jamais toucher au lignes 1,2 et 3.
dans cette feuille on ajoutera les numéros de dossard a partir du deuxième ordinateur.
pour ensuite faire une recherche de valeurs par rapport au numéro de dossard (Pour le nom le prénom etc... mais ça je maîtrise !!!)depuis un troisième classeur.
Dans la feuille "Base VTT" pareil que dans la base canicross mais en gardant les lignes avec un V (on supprime les lignes avec un C ou un M mais toujours seulement a partir de la ligne 4.
Dans la feuille "Base Marche" pareil que dans la base VTT mais en gardant les lignes avec un M (on supprime les lignes avec un C ou un V mais toujours seulement a partir de la ligne 4.
Voila j’espère que je suis plus clair dan ce que je voudrais réussir a avoir
Je vous joint les deux classeur
le troisième dont je parle ne vous servira pas a grand chose la RECHERCHE V en formule je maîtrise pas trop mal
Merci Beaucoup par avance pour votre aide
Franck
il se trouve sur ma clé USB --> F:\Inscriptions EXCEL complet\inscriptions sur place\Baseinscr.xlsm
il se trouve sur ma clé USB --> F:\Inscriptions EXCEL complet\BASE\YENNE\Base_YENNE.xlsm
Pour info dans le classeur Baseinscr Feuil2
Colonne S a W cela indique si le concurrent participe a la course (1 pour oui et 0 pour non)
le mot de passe pour sortir du USERFORM est 1981
oui c'est un compliquer
mais se sera pratique et on gagnera enormement de temps avec ça
Re,
Oui je sais, mais trop d'informations tue l'information
Perso je n'ai pas envie de lire ton roman, et je pense que d'autres feront pareil
D'accord Je vais le faire par étape alors
Merci quand meme de me l'avoir dit
Bonjour
Un essai à tester.
Et sans doliprane : pour une fois, au moins, les explications étaient claires, il suffisait de lire, sans s'effrayer de la longueur du message…
Bye !
Merci déja pour ton aide,
mais comment faire pour pouvoir le faire avec le classeur Baseinscr de fermée, car pour que tout concorde avec ce que je veux faire ce classeur doit forcement etre fermée,
J'ai modifier ce code la
'On enlève les lignes contenant '1' dans la colonne S de Base Yenne
DerLn = Range("F" & Rows.Count).End(xlUp).Row
DerLn = Application.Max(4, DerLn)
For Ln = 4 To DerLn
If Range("S" & Ln).Value = 1 Then
Rows(Ln).Delete Shift:=xlUp
End If
Next LnPar ça
'On enlève les lignes contenant '0' dans la colonne S de Base Yenne
DerLn = Range("F" & Rows.Count).End(xlUp).Row
DerLn = Application.Max(4, DerLn)
For Ln = 4 To DerLn
If Range("S" & Ln).Value = 0 Then
Rows(Ln).Delete Shift:=xlUp
End If
Next Lncar Je veux seulement garder ceux avec le 1 dans YENNE
Ensuite pourquoi dans Base canicross quand je fais l'importation Il y a encore une ligne avec un V qui est présent
De meme dans Base VTT j'ai une ligne avec un M
Et tout est bon pour la base de la marche
Je te joint de nouveau les fichiers
Baseincr est obligatoirement fermée lors de l’importation du fait qu'il sera déjà ouvert sur un autre ordinateur depuis lequel les concurrents pourront continuer a s'inscrire il est enregistrer a chaque fois que le concurrent termine son inscription via le userform
voila voila
Merci beaucoup déja pour tout ça
Bonjour
Pour les bugs que tu signales, ils sont corrigés sur cette nouvelle version.
Fais attention, ce que tu as modifié n’est pas bon.
Pour ce qui est de faire une importation de données qui sont dans un classeur fermé mais ouvert sur un autre ordi, ça, je ne sais pas faire. Désolé….
Si tu trouves, cela m’intéresse !
Bon courage !
Merci Beaucoup gmb
pour ce qui est de l'importation depuis le classeur fermée
en fait tout les classeurs sont dans un dossier sur une clé USB partagée a partir d'un ordinateur
le classeur fermée (Baseinscr) est ouvert sur un ordinateur mais le bouton du fin du userform enregistre tout le classeur Baseinscr
j'avais demander dans un autre Sujet comment faire
VOici le code en question fait par Yvouille
Sub ImportBASEYenne()
Application.ScreenUpdating = False
Workbooks.Open Filename:="E:\Inscriptions EXCEL complet\inscriptions sur place\Baseinscr.xlsm"
Sheets("Feuil2").Range("B7:W" & Range("B" & Rows.Count).End(xlUp).Row).Copy Destination:=ThisWorkbook.ActiveSheet.Range("B" & ThisWorkbook.ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row + 1)
ActiveWorkbook.Close
End SubEnsuite
alors pour faire simple les concurrents peuvent s'inscrire tout le long de journée donc il faut
que seulement les gens qui s'inscrive en dernier apparaissent seulement (je viens de remarquer quand supprimant les lignes comme par exemple dans marche si on ajoute le numéro de dossard et que long fait une réimportation cela va supprimer le numéro de dossard).
n'est t'il pas possible de mettre les suivant sans supprimer le début et sans qu'il y es de doublon
Mais alors comment faire ?
Merci déjà par avance et pour ce que tu fais
moi tout seul je n'est pas les compétence pour aller au bout
Vraiment merci c'est vraiment sympa
Bonjour
Merci pour l'info concernant l'importation depuis le classeur fermée
Mais le code de Yvouille, que je salue respectueusement en passant (c'est un vrai crack !) nécessite de connaître le chemin pour aller chercher de ton PC les données sur un fichier situé sur un autre PC :
Workbooks.Open Filename:="E:\Inscriptions EXCEL complet\inscriptions sur place\Baseinscr.xlsmLe « E » en particulier risque de changer selon la configuration du moment de ton PC
Il te faudra donc l’adapter sur place mais je pense que tu derais savoir faire.
Ceci étant, tu écris :
n'est t'il pas possible de mettre les suivant sans supprimer le début et sans qu'il y es de doublonMais alors comment faire ?
J’ai une idée que je te soumets.
Elle consisterait à ajouter une colonne dans les deux fichiers, à l’extrémité gauche (colonne X) dans laquelle s’écrirait automatiquement un numéro d’ordre s’incrémentant à chaque ligne sur le fichier Inscription à chaque validation de la boite de dialogue.
Ensuite, on importerait les données de la feuille d’inscription sur la feuille Yenne non pas à la ligne 4 mais à la suite : il suffirait alors d’éliminer les doublons de ces numéros qui ne contiennent pas de numéro de dossard, ou l’un des deux si aucun n’en contient.
Qu’en penses-tu ?
Bonjour Gmb et merci,
Pour le code de Yvouille effectivement il y aura seulement la lettre a changer le dossier se trouvant sur une clé USB.
Ensuite pour ce que tu me disais j'ai pas tout compris comment tu voulais faire.
En fait il faudrait que ceux qui se rajoute quand je fais une nouvelle importation s'insrivent a la suite.sans supprimer les lignes deja avec un numero de dosard
Sinon ne pourrait t'on pas juste creer une autre page a partir de laquelle on ferait un copier coller de la BASE Canicross par exmple
Cela empecherais de supprimer les lignes dans ce dernier les 1 etant déja trier dans la colonne S et les C etant dèja trier danc la colonne R.
Qu'en pense-tu ?
SInon pour le code de Yvouille j'ai juste a remplace ça
Sub Import()
'Pour effectuer l'importation des données depuis le classeur d'inscriptions
'On vérifie que le classeur d'inscription est ouvert et contient une "Feuil2"
Flag = 0
For Each W In Workbooks
If W.Name = "Baseinscr.xlsm" Then
For i = 1 To W.Sheets.Count
If W.Sheets(i).Name = "Feuil2" Then
Flag = 1
End If
Next i
End If
Next W
If Flag = 0 Then
MsgBox "Il n'y a pas de classeur ouvert avec une feuille nommée ''Feuil2'' !", 16
End
End If
'On importe les données du classeur d'inscription
With Workbooks("Baseinscr.xlsm").Sheets("Feuil2")
DerLn = .Range("F" & Rows.Count).End(xlUp).Row
DerLn = Application.Max(7, DerLn)
.Range("B7:W" & DerLn).Copy
Range("B4").PasteSpecial xlPasteValues
End Withpar ça
Sub ImportBASEYenne()
Application.ScreenUpdating = False
Workbooks.Open Filename:="F:\Inscriptions EXCEL complet\inscriptions sur place\Baseinscr.xlsm"
Sheets("Feuil2").Range("B7:W" & Range("B" & Rows.Count).End(xlUp).Row).Copy Destination:=ThisWorkbook.ActiveSheet.Range("B" & ThisWorkbook.ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row + 1)
ActiveWorkbook.Close
End Subc'est Bien ça ?
Bonjour Gmb,
Pour ce qui concerne le code de Yvouille, Le fichier se trouvant sur une clé USB effectivement seulement la lettre changera mais je pourait modifier juste le E suivant le PC.
Comment faire mettre le code de Yvouille Pour l'importation.
Pour l'histoire de doublon Je n'est pas tout compris j'en suis désolé. Mais J'ai eu une idée cette nuit, mon idée serait de Créer une nouvelle page pour base canicross en l'appelant Dossard Canicross Par exemple, et seulement faire un copier-coller de B3 a la dernière cellule Je pense que cela éviterait de supprimer les lignes das la page Dossard canicross. Non, Qu'en pense-tu ?
Je te remercie
Franck
Bonjour Franck
En ce qui concerne la manip pour adapter la macro avec le code de Yvouille, c’est bien ça.
Mais moi je resterai sur la forme actuelle car je n’ai qu’un ordi et si je veux tester les importations, je n’ai pas d’autre choix.
Tu écris :
En fait il faudrait que ceux qui se rajoute quand je fais une nouvelle importation s'insrivent a la suite.sans supprimer les lignes deja avec un numero de dosard
C’est bien ce que je te propose.
Mais ensuite, il faut éliminer les doublons car tous les enregistrements déjà importés figureront deux fois, avec pour certains (ou tous ?) ceux que tu auras complétés par un numéro de dossard.
Et c’est pour repérer plus vite ces doublons, avec ou sans dossard, qu’il serait bien d’avoir une colonne supplémentaire où on mettrait, dès l’enregistrement initial, un numéro qui serait unique pour chaque inscription. Il n’y a pas grand-chose à ajouter à la macro actuelle pour que ce soit automatique.
On peut faire sans ce numéro mais la macro va travailler beaucoup plus longtemps, et surtout, ce ne serait pas très astucieux.
Il faudrait alors que, après importation, la macro compare toutes les lignes entre elles et cellules de chaque colonne entre elles de la colonne B jusqu’à la colonne W. Pauvre macro !
As-tu compris ?
Que fait-on ?
A te lire.
Je veux veux bien que tu essais de faire comme tu as dit cra je ne vois pas du tout ce que ça peux donner mais cela a l'air pas mal quand même si cela regle le problème des dossard supprimer je suis preneur
Je te remercie en tout cas
Bonjour Franck
Ci-joint ma dernière version.
Comme j’ai mis un tout petit additif à la macro du valider des Userform, je te joins également le classeur d’enregistrement. Pour ne pas le confondre, j’ai modifié son nom. La macro Yenne V3 marche donc avec ce classeur.
Le travail que fait la macro :
1- Elle met à jour la feuille Yenne en y inscrivant les n° de dossard qui ont été écrit directement sur les feuilles des bases
2- Elle efface toutes les données des bases et ne garde que celles de Yenne. A noter que ces données sont censées avoir été importées et ont donc un numéro en colonne X
3- Elle va chercher les données des inscriptions, qui ont donc désormais un numéro en colonne X
4- Elle efface les doublons pour ne garder que la ligne qui a un numéro de dossard ou, si il restait avant importation une ligne sans dossard, elle supprime une des deux lignes
5- Elle élimine les lignes où il y a 0 en colonne S
6- Elle reporte toutes ces données dans les 3 bases
7- Elle passe à la feuille de chacune des bases où elle élimine ce qui ne lui convient pas et ne garde que les lignes où il y a en colonne R la lettre C pour la base Canicross, la lettre V pour la base VTT et la lettre M pour la base Marche
Et c’est tout.
Je t’ai mis des boutons pour mettre à jour les numéros de dossards dans le classeur. Que tu saisisses ce numéro sur la base concernée ou sur la base Yenne, toutes les feuilles se mettent à jour quand tu cliques dessus.
A toi maintenant de chercher les bugs !
Bye !
Bonjour,
Très bien, merci beaucoup, mais maintenant comment faire pour tout adapter à ce que j'ai déja ?
J'ai trouvé pas mal de bug dans le USF , des cases Textbox oubliées, etc....
Pour le code que tu as fait rien à dire c'est Super ça marche à merveille !!!!
Je vais commencer par te lister les bugs et j'ai regardé je n'arrive pas à les résoudre
Les Voici dans le UsfchoixNonlicencie
J'ai rajouté deux Text Box qui manquaient (Propriétaire et la date de naissance du chien qui servent uniquement pour la page Impression)
ainsi que une case à cocher Chimilin Dimanche ce qui décale l'importation de W à Y
J'ai voulu rajouter la première lettre en Majuscule automatiquement pour Le propriétaire et faire en sorte que pour la date de naissance on soit obligé de l'inscrire sous forme jj/mm/aaaa
Ensuite je voulais que dans le cas ou le concurrent était déjà licencié cela coche automatiquement son sexe dans le caption Sexe (H ou F)
Je voudrais aussi que l'on ne puisse pas valider le USF si un des deux caption Sexe (H ou F) n'est pas coché.
Je voudrais aussi que l'on ne puisse pas valider le USF si un des trois caption Discipline (C, V ou M) n'est pas coché.
Je voudrais la même choses pour les courses il faudrait qu'il y ait au moins une course de cochée sur le tout.
Voila pour ce qui est des Bugs
Je te joins le dernier fichier Baseinscr que l'on a modifié
on a supprimé le bouton Non Licencié dans le choix licence ainsi que la page du USF car il n'y avait aucun intérêt a mettre deux pages.
Peux tu mettre aussi le code que tu as fait dans le fichiers Baseinscr_V car j'ai peur de faire une connerie.
Voila Voila
Et merci encore pour ton aide.
Bonjour Franck
Je remarque qu’il n’y a pas de colonne « Propriétaire » dans la Feuil2. C’est normal ?
Je mets mon numéro d’enregistrement en colonne Y ou Z ?
A te lire
oui Gmb c'est Normal,
nous le voulons seulement sur la feuille imprimer,
Le numéro d'enregistrement sera donc en Y.
Sinon pour le reste tu as trouvé ce qui n'allait pas parceque moi j'ai essayer pendant un moment et j'ai pas reussi.
Je te remercie
Franck
Bonsoir
Sinon pour le reste tu as trouvé ce qui n'allait pas...
J'en trouve pas mal. En voulant modifier, vous avez fait pas mal de bêtises !
Mais c'est comme ça qu'on apprend !
A propos, pourrais-je savoir qui a écrit l'original de cette macro ?
A te lire.
Bonsoir Gmb,
C'est ma copine qui a commencé a le faire a l'aide de forum etc...elle faisait deja un peu de programmation en Prépa avec Scilab.
Ensuite c'est moi qui lui disais ce qui serait pratique et ce qui ne l’était pas mais on n'y connait pas grand chose en VBA.
Moi je fais plus des choses avec des formules du genre recherche d'une valeur etc ....
Voila voila
bon courage pour tout remettre d'aplomb du coup
et je viens de voir qu'au niveau de la tabulation c’était pas top non plus dans UsfNonlicencie
Je te remercie par avance
Bon courage