Ajouter un incrément automatique par macro VBA

FEPOL

XLDnaute Nouveau
Bonjour chers amis,

Nouveau venu dans le monde du VBA, je me trouve confronté à un pb dans la gestion d'un tableau sur deux colonnes.
Nous aidons les jeunes à trouver un stage, un emploi, une formation, etc...
Mais souvent ils postulent sur trois, quatre, ou cinq offres, mais avec un seul numéro d'adhérent.

Ainsi, lors de la récupération des données du site et pour les exploiter sur Excel, je souhaite ajouter une racine d'incrémentation à l'identifiant.

Je précise....Le tableau contient deux colonnes, A: l'identifiant et B: l'intitulé de poste.

Je souhaite réaliser une macro qui va trier le fichier sur les identifiants, puis ajouter la racine"-0" à la premiere occurence, puis si un identifiant existe en deux exemplaires, le second aura la racine "-1", s'il y en à encore un il aura la racine "-2", etc..., puis quand le suivant change il reçoit à nouveau "-0" pour la première occurence, etc...
Exemple :
1548752 devient 1548752-0, le suivant 1548752-1, ect...

Par avance je vous adresse toute ma reconnaissance et mes remerciements.
Bien à vous ,
Josiel.
 

smotty

XLDnaute Occasionnel
Re : Ajouter un incrément automatique par macro VBA

Bonsoir,

Je sais que je ne vais pas répondre directement au problème mais la logique "base de donnée" est d'avoir un identifiant (ID) également pour l'annonce.

Le deux ID distincts forment à eux deux un moyen de gérer les données:

- ID du postulant dans une colonne
- ID de l'annonce dans une autre colonne

Les deux identifiant distincts forment un moyen de gérer votre base de données.

Sinon je joindrai un code dans le prochain message.

cdt

smotty
 

smotty

XLDnaute Occasionnel
Re : Ajouter un incrément automatique par macro VBA

Bonjour Habitude,

je pense que ça devrait convenir:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    
    If Target.Column = 1 And Not Target Like "*-*" Then
        Target.Value = Target.Value & "-" & WorksheetFunction.CountIf(Range("A:A"), Target & "-*") + 1
    End If
End Sub

voir fichier joint pour exemple:)
 

Pièces jointes

  • ID_POSTULANT.xls
    32 KB · Affichages: 393

FEPOL

XLDnaute Nouveau
Re : Ajouter un incrément automatique par macro VBA

Bonjour SMOTTY et merci pour votre contribution...

Malheureusement je ne suis pas en mesure d'exploiter votre macro.
Je suis grave nul...! ou c'est un pb sur le site.
Je pense que vous n'avez pas affiché en clair dans votre message la totalité de la macro, puisque la partie apparente n'a aucune action.

J'ai donc télécharger votre fichier joint et là je recois un fichier type du site me signifiant que je doit être connecté pour recevoir la pièce.
Pourtant je suis bien connecté, avec mes identifiants, j'ai accès à mon compte , mais à chaque tentatives je recois toujours une page Excel par défaut du site.

Donc voici un email pour m'adresser le fichier... Par avance merci.
fepol.fr[at]gmail.com
FEPOL

Bonjour Habitude,

je pense que ça devrait convenir:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    
    If Target.Column = 1 And Not Target Like "*-*" Then
        Target.Value = Target.Value & "-" & WorksheetFunction.CountIf(Range("A:A"), Target & "-*") + 1
    End If
End Sub

voir fichier joint pour exemple:)
 

Pierrot93

XLDnaute Barbatruc
Re : Ajouter un incrément automatique par macro VBA

Bonjour à tous,

Je pense que vous n'avez pas affiché en clair dans votre message la totalité de la macro, puisque la partie apparente n'a aucune action.

A priori le code est bien dans sa totalité.... par contre où l'as tu placé ? Il doit être positionné dans le module de la feuille où il doit s'appliquer... pour ce faire, click droit sur l'onglet => visualiser le code => et tu le colles...

bonne journée
@+
 

FEPOL

XLDnaute Nouveau
Re : Ajouter un incrément automatique par macro VBA

Bonjour,

J'ai réellement le sentiment d'abuser de votre aimable soutien,
mais impossible de m'en sortir seul.
J'ai trois possibilités pour coller la macro:
1) dans "Feuil1"
2) dans "Module1"
3) dans "Thisworkbook"

Dans tous les cas de figure, je ne vois pas la macro pour la lancer,
quand je demande la liste des macros présentent.

Que n'ai-je pas fais de correcte ?
J'ai l'impression de devoir être pris par la main pour y parvenir... (dur-dur)

Encore merci pour votre patience et votre soutien.
:eek::rolleyes:;):)

Bonjour à tous,



A priori le code est bien dans sa totalité.... par contre où l'as tu placé ? Il doit être positionné dans le module de la feuille où il doit s'appliquer... pour ce faire, click droit sur l'onglet => visualiser le code => et tu le colles...

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Ajouter un incrément automatique par macro VBA

Re,

à priori, à placer dans "feuil1".... sinon mets un fichier en pièce jointe.... ton niveau de sécurité est bien réglé sur moyen et tu autorises les macros lors de l'ouverture du classeur ?
 

Cousinhub

XLDnaute Barbatruc
Re : Ajouter un incrément automatique par macro VBA

Bonjour,

Bonjour, Pierrot :)

Le code fourni par Smotty fonctionnera dès que tu entreras un numéro d'identifiant dans la colonne A....

Cependant, si tu as déjà un fichier bien rempli, tu peux utiliser le code ci-dessous, afin de remplir les lignes déjà remplies :

Code:
Sub postulant()
Dim Cel As Range
Dim LesPostulants As Object
Dim I As Byte
Dim Tmp
Set LesPostulants = CreateObject("Scripting.Dictionary")
For Each Cel In Range("A2:A" & [A65000].End(xlUp).Row)
    Tmp = Split(Cel.Value, "-")
    If Not LesPostulants.Exists(Tmp(0)) Then
        LesPostulants.Add Tmp(0), Tmp(0)
        If InStr(1, Cel, "-") = 0 Then Cel.Value = Cel.Value & "-0"
    Else
        Cel.Value = Cel.Value & "-" & Application.CountIf(Columns(1), Tmp(0) & "-*")
    End If
Next Cel
End Sub

Code à placer dans un module (que tu as vu nommé "Module1")

Après avoir déroulé ce code, tu peux le supprimer, et mettre le code de Smotty dans l'évènement de feuille, comme te l'a expliqué Pierrot.

Bonne soirée
 

FEPOL

XLDnaute Nouveau
Re : Ajouter un incrément automatique par macro VBA

Bonjour à tous et merci...

Je mesure toute l'importance d'une bonne communication et là je dois encore m'améliorer...

En effet maintenant j'ai compris que la macro fonctionne bien, mais lors de la saisie des codes... Mais pour cela je n'aurais pas demandé tant de travail, nous pouvvons saisir deux caractères de plus au clavier.

Ce que j'ai mal indiqué, c'est que nous récupérons les données saisies sur le site par les postulants et que nous importons le csv dans Excel et c'est bien dans ce cas ou nous avons besoin d'une macro qui reconfigure l'identifiant, puisqu'un même candidat peut postuler à plusieurs offres. D'ou l'importance de donner un incrément à son identifiant.

Idéalement nous souhaitons que l'incrément commence par le chiffre zéro, puis 1, puis, 2, etc...

Quand à la dernière macro qui semble bien prendre en compte cette configuration, elle emet le message d'erreur suivant "Sub ou fonction non definie"...

J'en profite pour joindre un des fichiers exploité, ici celui des formations:

Encore merci votre aide m'est précieuse...

Bonjour,

Bonjour, Pierrot :)

Le code fourni par Smotty fonctionnera dès que tu entreras un numéro d'identifiant dans la colonne A....

Cependant, si tu as déjà un fichier bien rempli, tu peux utiliser le code ci-dessous, afin de remplir les lignes déjà remplies :

Code:
Sub postulant()
Dim Cel As Range
Dim LesPostulants As Object
Dim I As Byte
Dim Tmp
Set LesPostulants = CreateObject("Scripting.Dictionary")
For Each Cel In Range("A2:A" & [A65000].End(xlUp).Row)
    Tmp = Split(Cel.Value, "-")
    If Not LesPostulants.Exists(Tmp(0)) Then
        LesPostulants.Add Tmp(0), Tmp(0)
        If InStr(1, Cel, "-") = 0 Then Cel.Value = Cel.Value & "-0"
    Else
        Cel.Value = Cel.Value & "-" & Application.CountIf(Columns(1), Tmp(0) & "-*")
    End If
Next Cel
End Sub

Code à placer dans un module (que tu as vu nommé "Module1")

Après avoir déroulé ce code, tu peux le supprimer, et mettre le code de Smotty dans l'évènement de feuille, comme te l'a expliqué Pierrot.

Bonne soirée
 

Cousinhub

XLDnaute Barbatruc
Re : Ajouter un incrément automatique par macro VBA

Re-,

Lorsque tu es sous VBE (Visual Basic Editor), via Alt + F11, regarde dans les références :

Outils/Références

s'il n'y a pas de "MANQUANT" de coché

Si c'est le cas, décoche....

Bonne chance
 

FEPOL

XLDnaute Nouveau
Re : Ajouter un incrément automatique par macro VBA

Après vérifications la réponse est négative,
J'ai les éléments suivants de cochés:
- Visual Basic for application
- Microsoft Excel 11.0 Object Library
- OLE automation
- Microsoft Forms 2.0 Object Library
- Microsoft Office 11.0 Object Library

Tout le reste est décoché. ("Manquant" n'est pas présent dans liste)
On ne pas être loin de la solution, reste à trouver le grain de sable...

Pas si simple les méandres de l'informatique !
;):eek::p



Re-,

Lorsque tu es sous VBE (Visual Basic Editor), via Alt + F11, regarde dans les références :

Outils/Références

s'il n'y a pas de "MANQUANT" de coché

Si c'est le cas, décoche....

Bonne chance
 

Cousinhub

XLDnaute Barbatruc
Re : Ajouter un incrément automatique par macro VBA

Re-,

En reprenant le fichier (que tu avais "omis" de joindre) de Smotty, regarde ce que donne mon code...

si tu as une erreur, merci de bien vouloir me dire sur quelle ligne...
 

Pièces jointes

  • ID_POSTULANT_v1.zip
    8.5 KB · Affichages: 190

FEPOL

XLDnaute Nouveau
Re : Ajouter un incrément automatique par macro VBA

RE....

En effet la même erreur se reproduit, même avec votre fichier, que lorsque j'ai collé la macro.

Voici l'erreur:
"Sub ou function non definie"...

L'erreur marque la première ligne "Sub postulant()"
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Code:
Sub postulant()
Dim Cel As Range
Dim LesPostulants As Object
Dim I As Byte
Dim Tmp
Set LesPostulants = CreateObject("Scripting.Dictionary")
For Each Cel In Range("A2:A" & [A65000].End(xlUp).Row)
Tmp = Split(Cel.Value, "-")
If Not LesPostulants.Exists(Tmp(0)) Then
LesPostulants.Add Tmp(0), Tmp(0)
If InStr(1, Cel, "-") = 0 Then Cel.Value = Cel.Value & "-0"
Else
Cel.Value = Cel.Value & "-" & Application.CountIf(Columns(1), Tmp(0) & "-*")
End If
Next Cel
End Sub
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°


Re-,

En reprenant le fichier (que tu avais "omis" de joindre) de Smotty, regarde ce que donne mon code...

si tu as une erreur, merci de bien vouloir me dire sur quelle ligne...
 

Cousinhub

XLDnaute Barbatruc
Re : Ajouter un incrément automatique par macro VBA

Re-,

A tout hasard..... :eek:

Regarde dans "Outils/Macros complémentaires...."

et coche "Solveur"

Je n'en vois pas du tout la raison, mais comme je l'ai développé sur mon pc, et que cette macro complémentaire est cochée....

Vraiment à tout hasard....
 

Discussions similaires

Réponses
0
Affichages
176
Réponses
3
Affichages
320

Statistiques des forums

Discussions
312 492
Messages
2 088 905
Membres
103 982
dernier inscrit
krakencolas