pmosna76
Nouveau membre
Bonjour à tous,
Débutant mon utilisation du VBA Excel, je me suis retrouvé à créer une fonction permettant de retraiter des données.
Je m'explique :
- J'ai un fichier de personnel "RH"
- Un fichier de personnel "C"
- Un troisième fichier réunissant les BDD des deux autres "B"
Avec ces deux fichiers un problème est survenu, les noms des utilisateurs ne sont pas toujours les même (un accent, un tiret, un deuxième prénom en plus ...). J'ai donc récupérer une fonction permettant de retirer les accents etc.
Pour cette partie pas de soucis.
Dans mon fichier "B", j'ai appliqué la première fonction pour enlever les accents etc, j'ai ensuite créer une fonction SI (peut-être existe-t-il une meilleure solution?), permettant de retraiter les utilisateurs en double "différent".
Via ma fonction, pas de soucis pour retraiter les noms des utilisateurs doublons.7
Mon soucis survient à ce moment, je ne parviens pas à récupérer les utilisateurs qui n'avait pas de soucis de doublons.
Voici mon code (réduis à cause de certaine données confidentielles mais le principe reste le même)
Function MajNomPrenom(Nom_Prenom As String) As String
Dim i As Long
If Nom_Prenom = "AA" Then 'Les utilisateurs sont bien retraités et renommés correctement
MajNomPrenom = "AAA"
ElseIf Nom_Prenom = "BB" Then
MajNomPrenom = "BBB"
ElseIf Nom_Prenom = "YY" Then
MajNomPrenom = "YYY"
ElseIf Nom_Prenom = "XX" Then
MajNomPrenom = "XXX"
ElseIf Nom_Prenom = "VV" Then
MajNomPrenom = "VVV"
Else
For i = 0 To 20
MajNomPrenom = Workbooks("TESTTTTGTTTTETTETETEETT.xlsm").Worksheets("Feuil1").Columns("B").Rows(i).Value
i = i + 1
Next i
End If
End Function
Mon compteur n'est probablement pas bon, c'est l'une des dernières chose que j'ai tenté et qui n'a pas marché.
Le soucis étant que je n'arrive pas récupérer le nom des utilisateurs qui n'ont pas changé dans ma nouvelle colonne d'utilisateurs retraités.
Je n'arrive pas à comprendre pourquoi mon compteur "i" ne permet pas de récupérer les données à chaque ligne et à chaque itération.
Si je remplace "Rows(i)" par Rows(3) par exemple, plus de soucis il me copie les données de B3 dans chaque cellule vide de ma nouvelle colonne.
En espérant que certains d'entre vous réussiront à comprendre mon soucis et m'expliquer comment le corriger,
Cordialement,
Débutant mon utilisation du VBA Excel, je me suis retrouvé à créer une fonction permettant de retraiter des données.
Je m'explique :
- J'ai un fichier de personnel "RH"
- Un fichier de personnel "C"
- Un troisième fichier réunissant les BDD des deux autres "B"
Avec ces deux fichiers un problème est survenu, les noms des utilisateurs ne sont pas toujours les même (un accent, un tiret, un deuxième prénom en plus ...). J'ai donc récupérer une fonction permettant de retirer les accents etc.
Pour cette partie pas de soucis.
Dans mon fichier "B", j'ai appliqué la première fonction pour enlever les accents etc, j'ai ensuite créer une fonction SI (peut-être existe-t-il une meilleure solution?), permettant de retraiter les utilisateurs en double "différent".
Via ma fonction, pas de soucis pour retraiter les noms des utilisateurs doublons.7
Mon soucis survient à ce moment, je ne parviens pas à récupérer les utilisateurs qui n'avait pas de soucis de doublons.
Voici mon code (réduis à cause de certaine données confidentielles mais le principe reste le même)
Function MajNomPrenom(Nom_Prenom As String) As String
Dim i As Long
If Nom_Prenom = "AA" Then 'Les utilisateurs sont bien retraités et renommés correctement
MajNomPrenom = "AAA"
ElseIf Nom_Prenom = "BB" Then
MajNomPrenom = "BBB"
ElseIf Nom_Prenom = "YY" Then
MajNomPrenom = "YYY"
ElseIf Nom_Prenom = "XX" Then
MajNomPrenom = "XXX"
ElseIf Nom_Prenom = "VV" Then
MajNomPrenom = "VVV"
Else
For i = 0 To 20
MajNomPrenom = Workbooks("TESTTTTGTTTTETTETETEETT.xlsm").Worksheets("Feuil1").Columns("B").Rows(i).Value
i = i + 1
Next i
End If
End Function
Mon compteur n'est probablement pas bon, c'est l'une des dernières chose que j'ai tenté et qui n'a pas marché.
Le soucis étant que je n'arrive pas récupérer le nom des utilisateurs qui n'ont pas changé dans ma nouvelle colonne d'utilisateurs retraités.
Je n'arrive pas à comprendre pourquoi mon compteur "i" ne permet pas de récupérer les données à chaque ligne et à chaque itération.
Si je remplace "Rows(i)" par Rows(3) par exemple, plus de soucis il me copie les données de B3 dans chaque cellule vide de ma nouvelle colonne.
En espérant que certains d'entre vous réussiront à comprendre mon soucis et m'expliquer comment le corriger,
Cordialement,