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

31baseinscr.xlsm (231.23 Ko)

il se trouve sur ma clé USB --> F:\Inscriptions EXCEL complet\inscriptions sur place\Baseinscr.xlsm

33base-yenne.xlsm (24.16 Ko)

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

2 doliprane SVP merci

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 !

19base-yenne-v1.xlsm (32.78 Ko)

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 Ln

Par ç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 Ln

car 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

21base-yenne-v1.xlsm (30.75 Ko)
19baseinscr.xlsm (281.00 Ko)

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 !

20base-yenne-v2.xlsm (34.17 Ko)

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 Sub

Ensuite

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.xlsm

Le « 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 With

par ç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 Sub

c'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 !

28baseinscript.xlsm (243.38 Ko)
21base-yenne-v3.xlsm (43.23 Ko)

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.

31baseinscr.xlsm (215.91 Ko)

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

Rechercher des sujets similaires à "probleme finir codes vba"