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!
A voir également:

11 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
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 58392 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 avril 2024 17 095
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 58392 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 avril 2024 17 095
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
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 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
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