VBA remplacer des sigles par le nom complet

Résolu
Thomas8080 Messages postés 19 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,
Est-ce qu'il y aurait quelqu'un qui pourrait trouver la solution à mon problème?
Le voilà
Dans un fichier excel j'ai 6 feuillets: sigles (qui contient en colonne A les abréviations, en colonne B les nom prénom et en colonne C les mails)
Casse1, Classe2, Classe3 Classe4, Classe5 qui contiennent les heures de cours et le nom du prof en sigle.
Je voudrais pouvoir remplacer tous les sigles de chaque feuille soit par le nom prénom (colonne B feuille sigle) soit par le mail (colonne C feuille sigle).

Je patauge... :-((

Merci d'avance et bonne journée
-- Luca --

9 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour

    je pense qu'il faut voir comment tes données sont organisées
    peux tu envoyer ton fichier, au format excel 2003, sans données confidentielles sur cjoint.com et joindre le lien obtenu à ton prochain message

    bonne suite
    0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Q1. les sigles (2 lettres) à remplacer, commencent à partir de la ligne 5 (1°,2°,3°) ou 6 (4°,5°)?
    Q2. que fait on des sigles "doubles" (FI PC par exemple)
    Q3. tu veux les deux options au choix (remplacement par nom-prenom ou email)
    Q4. Que fait on avec les largeurs de colonnes?
    0
    1. Thomas8080 Messages postés 19 Statut Membre
       
      Q1. disons de la ligne 2 (lignes à supprimer)
      Q2. Je peux les traiter à la main
      Q3. Oui, de préférence ;))
      Q4. Indifférent

      Grand merci
      0
  3. Christof422 Messages postés 990 Statut Membre 213
     
    C'est pour le faire une seul fois ou alors le faire souvent?

    Car j'ai une macro qui marche mais elle est très lourde...

    Le premier pas vers la solution est la recherche. Notre ami Google connaît sûrement la solution...
    0
    1. Thomas8080 Messages postés 19 Statut Membre
       
      1 seule fois ;-))
      Vraiment merci!
      0
    2. Christof422 Messages postés 990 Statut Membre 213
       
      Dim sigle As Variant
      Dim ligne As Integer
      Dim ligne2 As Integer
      Dim nom As Variant
      
      
      For ligne = 1 To 125
      Sheets("Sigles").Select
      sigle = Cells(ligne, 1).Value
      nom = Cells(ligne, 2).Value
      
      
      For ligne2 = 1 To 41
      For colonne = 1 To 28
      
      Sheets("1ère").Select
      If Cells(ligne2, colonne).Value = sigle Then
      Cells(ligne2, colonne).Value = nom
      End If
      
      
      Next colonne
      Next ligne2
      Next ligne
      
      


      Voila, cela remplacera dans la feuille "1ère".


      Modifier ensuite 1ère en 2ème etc. pour faire les autres feuilles.

      Faire les 5 en même temps serai un peu lourd avec ce code.

      Procédure:

      Créer une macro
      Copier/Coller le code
      Lancer la macro
      Attendre la fin de la macro
      Si la macro est trop longue (plusieurs minute) la stopper en tapotant sur ESC.

      Cordialement
      0
  4. Thomas8080 Messages postés 19 Statut Membre
     
    Merci beaucoup!
    ça me va très bien.
    J'ai ajouté
    Application.ScreenUpdating = False
    et c'est nettement plus rapide.

    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. blux Messages postés 2046 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    la fonction recherche() aurait sans doute pu convenir...
    0
  7. Thomas8080 Messages postés 19 Statut Membre
     
    Pourquoi pas?
    S'il y a une autre solution qui me permet de ne pas retoucher le code pour chaque feuillet je suis preneur.

    Merci beaucoup pour votre aide.

    LC
    0
    1. Christof422 Messages postés 990 Statut Membre 213
       
      Tu peux a la rigueur utliser mon code en faisant un copier coller de

      Sheets("1ère").Select
      If Cells(ligne2, colonne).Value = sigle Then
      Cells(ligne2, colonne).Value = nom
      End If
      


      En modifiant juste le nom des sheets pour qu'il se fasse tous en même temps...
      0
    2. Thomas8080 Messages postés 19 Statut Membre
       
      Merci bien,
      J'apprécie votre suggestion elle est aussi valable. Même longueur en exécution.

      Bonne soirée
      0
  8. Thomas8080 Messages postés 19 Statut Membre
     
    Un grand merci c'est vraiment génial de pouvoir compter sur votre aide.
    Là c'est la classe!
    J'ai vraiment ce qu'il me fallait.
    Je vais clore le sujet
    Merci encore
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      attention j'ai modifie le lien à 21h21

      de plus, il te faut modifier les deux dernières lignes de Retrouver

      Set dikoNom = Nothing
      Set dikoMail = Nothing
      0
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    avec un peu de ménage et la prise en charge des sigles doubles
    https://www.cjoint.com/?0FqoHOs6XmQ

    bonne journée
    0
    1. Thomas8080 Messages postés 19 Statut Membre
       
      Je ne sais pas comment vous remercier.
      Un vrai travail de pro, je n'osais pas espérer autant.
      Si vous étiez en Valais je vous aurais offert l'apéro!! :-)) Je sais maintenant que si j'ai un soucis VBA ccm81 c'est le bon copain à contacter.
      Encore merci et bon dimanche
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      de rien
      le problème était intéressant et avait un petit gout d'inachevé !!!!
      cordialement
      PS. il reste quand même les "?" qui ne reviennent pas
      0