IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fonction VBA, retraitement de données [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 2
    Par défaut Fonction VBA, retraitement de données
    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)

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    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,

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Au début de la boucle i=0, la ligne 0 n'existe pas.
    De plus la ligne i = i + 1 est inutile puisque i est incrémenté automatiquement à chaque boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 20
        MajNomPrenom = Workbooks("TESTTTTGTTTTETTETETEETT.xlsm").Worksheets("Feuil1").Cells(i, "B")
    Next i
    Cordialement

  3. #3
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 20
    MajNomPrenom = Workbooks("TESTTTTGTTTTETTETETEETT.xlsm").Worksheets("Feuil1").Columns("B").Rows(i).Value
    Next i
    Lorsque tu sort de la boucle MajNomPrenom (variable unique) contient la dernier valeur (i=20) la boucle ne sert a rien

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 2
    Par défaut
    Bonjour à tous,

    Désolé pour le retard, beaucoup de chose à suivre mais peu de temps.

    Merci Arturo83, ta solution semble fonctionner correctement.

    En effet Sogedic, après avoir testé sans la boucle et en laissant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Else MaJNomPrenom = Nom_Prenom
    , j'arrive au même résultat. Je ne suis pas sûr d'avoir correctement compris pourquoi mais je vais faire mes petits tests pour en saisir le sens.

    Merci à vous pour votre aide, bonne journée

    Cdlt,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] VBA afficher des données en fonction d'un critère
    Par PaulineL dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/12/2015, 12h00
  2. [XL-2007] Extraire des données PDF sur Excel Via une fonction VBA
    Par Mouaffak_Mohammed dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/10/2015, 13h08
  3. Réponses: 4
    Dernier message: 04/07/2015, 18h43
  4. Retraitement de données avec VBA codes
    Par markinho dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 28/03/2009, 19h56
  5. Réponses: 21
    Dernier message: 21/04/2007, 08h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo