Recherche code Numéro Automatique dans une colonne

Résolu/Fermé
Ralph14
Messages postés
9
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
25 juin 2014
- 22 juin 2014 à 17:12
Ralph14
Messages postés
9
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
25 juin 2014
- 25 juin 2014 à 23:04
Bonjour!

Sur une feuille Excel 2007, je recherche une formule en VBA pour le problème suivant:
Colonnes qui peuvent avoir jusqu'à 64 noms:
(C, H, M, R, W)

Les colonnes de gauche sont les numéros automatiques qui suivent les colonnes des noms.
(B, G, L, Q, V)

Chaque colonne débute à la troisième ligne.

Quel est le code VBA pour ajouter des numéros automatiques en ordre croissant pour les cellules remplies seulement?

Quelqu'un aurait une solution?

Merci de votre aide!

11 réponses

eriiic
Messages postés
24408
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 juin 2022
7 089
22 juin 2014 à 23:15
Bonjour,

tu ne veux pas déposer un classeur exemple ?
Déposer le fichier xls sur cjoint.com et coller ici le lien fourni.

eric
0
Raymond PENTIER
Messages postés
56330
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
7 juillet 2022
17 210
22 juin 2014 à 23:37
Et tu tiens à faire cela en VBA ?
0
Ralph14
Messages postés
9
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
25 juin 2014

24 juin 2014 à 03:46
https://www.cjoint.com/?DFydNvvKuoW

Voici un exemple de mon fichier. Je veux le faire en VBA parce que je dois effacer les données à chaque nouvelle compétition.

Y a t-il un moyen de le faire?
0
Ralph14
Messages postés
9
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
25 juin 2014

24 juin 2014 à 03:54
Les colonnes de chiffres en rouges doivent s'insérer automatiquement si la cellule de droite contient un nom ou une équipe. La liste mentionne 64 noms ou équipes par épreuve. Souvent, le maximum de 64 joueurs ou équipes n'est pas atteint. Le dernier chiffre doit représenter le nombre de joueurs ou équipes inscrits dans chaque épreuve.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER
Messages postés
56330
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
7 juillet 2022
17 210
Modifié par Raymond PENTIER le 24/06/2014 à 05:17
Inutile de se farcir du VBA : une fois le tableau préparé, tu l'enregistres.
Pour chaque nouvelle compétition, tu fais une copie de ce fichier vierge et tu mets les nouveaux noms et clubs, puis tu enregistres sous un nouveau nom.

Pour ajouter un N° en B67, tu y mets la formule
=SI(C67="";"";B66+1) à recopier vers le bas ...

C'est bien, la retraite ! Surtout aux Antilles ... :-)
? Raymond (INSA, AFPA, CF/R)?
0
Ralph14
Messages postés
9
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
25 juin 2014

24 juin 2014 à 17:15
Je travaille sur 2 feuilles différentes dans un même classeur.

1) Entrée des inscriptions pour la compétition. Dans cette feuille, nous avons les informations suivantes: Nom, Club, Sexe, Épreuve Catégorie Simple, Épreuve Catégorie Double, Nom partenaire Double, Club Partenaire Double, Épreuve Catégorie Mixte, Nom Partenaire Mixte, Club Partenaire Mixte.

2) Classement des joueurs et des équipes pour les 5 épreuves (Test1)

Par le formulaire d'inscription, les joueurs ou équipes sont classés dans les différentes épreuves. Toutes ces informations sont envoyées à la feuille (Test1) via VBA. Tu comprendras que si j'inclus des formules dans les cellules, elles s'effaceront lorsque je vais cliquer sur les différents boutons. Il manque le dernier code pour compléter ma feuille. (Nombre de joueurs ou équipes par épreuve de 1 à 64 joueurs).

J'ai trouvé un code semblable à ce que je recherche. Par contre, il affiche des dates alors que je recherche des chiffres sans décimales.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
If IsEmpty(Target.Offset(0, -1)) Then
With Sheets("CODES")
With .Cells(1, 2)
If .Value <> Date Then
.Value = Date
.Offset(0, -1).Value = 0
End If
End With
With .Cells(1, 1)
.Value = .Value + 1
Target.Offset(0, -1).Value = Format(.Offset(0, 1).Value, "yyyyMMdd", vbMonday) & Format(.Value, "00")
End With
End With
End If
End If
End Sub

Quelqu'un peut m'aider à compléter le code?
0
eriiic
Messages postés
24408
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 juin 2022
7 089
24 juin 2014 à 17:42
Bonjour,

Je suis de l'avis de raymond. Aucun intérêt à faire ça en vba. J'enlève son -1
Sauf si c'est pour apprendre, dans ce cas il faut que tu mettes les mains dans le cambouis et que tu réfléchisses un peu.

eric
0
Ralph14
Messages postés
9
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
25 juin 2014

25 juin 2014 à 05:12
https://www.cjoint.com/?DFzfcC3UfzV

Bonjour!

Je travaille sur le dossier à temps perdu. J'y ai réfléchi! J'ai trouvé une solution. J'ai joint une copie de mon fichier. Il me reste à améliorer la boucle du code. Aussi, je veux inclure un code permettant les modifications et la mise à jour de la feuille advenant une annulation ou un rajout d'un joueur ou une équipe. Les informations des autres colonnes proviennent d'une autre feuille via VBA.

Je travaille à temps plein dans le monde du sport et ce dossier est extrêmement important pour notre structure organisationnelle. Il va nous sauver un temps très précieux.

Je ne suis pas un habitué du logiciel Excel. C'est pourquoi, Je fais appel à votre aide pour finaliser ce dossier!
0
Ralph14
Messages postés
9
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
25 juin 2014

25 juin 2014 à 05:14
En cliquant sur le bouton "Numéro Automatique", vous verrez le travail de la macro!
0
eriiic
Messages postés
24408
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 juin 2022
7 089
Modifié par eriiic le 25/06/2014 à 19:02
Bonjour,

Ton code amélioré :
Sub NumAuto()
    Dim lig As Long, col As Long
    Application.ScreenUpdating = False
    For col = 2 To 22 Step 5
        Cells(4, col).Resize(64).ClearContents
        For lig = 4 To 67
            If Cells(lig, col + 1) <> "" Then Cells(lig, col) = lig - 3 Else Exit For
        Next lig
    Next col
End Sub

Pour le reste c'est trop flou..

eric

PS: enregistre ton fichier en .xlsm


En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
Ralph14
Messages postés
9
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
25 juin 2014

25 juin 2014 à 23:04
Salut Eric!

Ton code fonctionne parfaitement! C'est en plein ce que je recherchais.

Pour le reste, je m'en occupe!

Merci beaucoup!
0