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 :

Création d'une macro permettant de remplacer des valeurs par une autre dans une sélection


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Par défaut Création d'une macro permettant de remplacer des valeurs par une autre dans une sélection
    Bonsoir la communauté,

    Je me permet de vous (rererere)solliciter pour faire avancer mon projet de planning pour mon travail. (à la demande de mon chef)

    Je souhaiterais créer une macro que j'assignerai a un raccourci clavier (ctrl + d) afin de remplacer les valeurs comprises dans la ligne sélectionnée.

    Nom : Sans titre.jpg
Affichages : 2240
Taille : 66,2 Ko

    Avec la mise en forme conditionnelle préalablement définie, les cellules vertes comprennent la lettre "j", les cellules noires la lettres "n", les cellules jaunes les lettres "rj", "rn" et "rw".

    Avec la macro je souhaiterais que:

    Après avoir sélectionné une partie de mon tableau (comme sur l'image), en faisant (ctrl + d) cela change les lettres ci-dessus par la lettre "d" correspondant à une cellule vide avec bordures. (MFC)

    Est-ce que quelqu'un d'entre-vous pourrait m'aider?

    Merci beaucoup.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu veux faire une macro VBA pour remplacer trois touches ???
    Outre le fait que ça semble disproportionné, ne crois-tu pas qu'il est peu judicieux pour un gain si faible d'introduire dans ton application un élément que tu ne maitriseras pas ?

    Dans compter que Ctrl+D est déjà affecté à la recopie vers le bas.
    Mieux vaudrait utiliser un bouton pour déclencher la macro.

    Enfin... si ça peut te faire plaisir :

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Tu veux faire une macro VBA pour remplacer trois touches ???
    Outre le fait que ça semble disproportionné, ne crois-tu pas qu'il est peu judicieux pour un gain si faible d'introduire dans ton application un élément que tu ne maitriseras pas ?

    Dans compter que Ctrl+D est déjà affecté à la recopie vers le bas.
    Mieux vaudrait utiliser un bouton pour déclencher la macro.

    Enfin... si ça peut te faire plaisir :
    La feuille comporte le planning de l'année 2018 complète sur 40 lignes (pour le personnel)

    Ce que je souhaiterai faire c'est que lorsque je sélectionne un bout de ligne et que je lance la macro, cela change (dans la sélection) les lettres j,n,rj.rn,rw par la lettre d.

    Bon cela ne marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If Selection.Value = "j" Or Selection.Value = "n" Or Selection.Value = "rj" Or Selection.Value = "rn" Or Selection.Value = "rw" Then
        Selection.Value = "d"
    End If
    Après peu importe le moyen de lancer la macro, bouton ou raccourci clavier.

    Merci de votre aide.

    Salutations

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par MicKRub Voir le message
    Ce que je souhaiterai faire c'est que lorsque je sélectionne un bout de ligne et que je lance la macro, cela change (dans la sélection) les lettres j,n,rj.rn,rw par la lettre d.

    Bon cela ne marche pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Selection.Value = "j" Or Selection.Value = "n" Or Selection.Value = "rj" Or Selection.Value = "rn" Or Selection.Value = "rw" Then
        Selection.Value = "d"
    End If
    Le code que je t'ai donné fonctionne. Teste-le et tu pourras le constater.

    Par contre, tu n'avais pas indiqué que tu ne voulais changer que les cellules ayant déjà un contenu.
    Et le test que tu as écris pour le faire ne peut pas fonctionner puisque Selection est une plage (et non une cellule individuelle). Donc, quand tu en demande la valeur, ça ne donne la valeur que de la première cellule.

    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim CC As Range
    For Each CC in Selection
        If CC.Value = "j" Or CC.Value = "n" Or CC.Value = "rj" Or CC.Value = "rn" Or CC.Value = "rw" Then CC.Value = "d"
    Next CC

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2003
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 70
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Le code que je t'ai donné fonctionne. Teste-le et tu pourras le constater.

    Par contre, tu n'avais pas indiqué que tu ne voulais changer que les cellules ayant déjà un contenu.
    Et le test que tu as écris pour le faire ne peut pas fonctionner puisque Selection est une plage (et non une cellule individuelle). Donc, quand tu en demande la valeur, ça ne donne la valeur que de la première cellule.

    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim CC As Range
    For Each CC in Selection
        If CC.Value = "j" Or CC.Value = "n" Or CC.Value = "rj" Or CC.Value = "rn" Or CC.Value = "rw" Then CC.Value = "d"
    Next CC
    Merci cela fonctionne parfaitement.

    Salutations

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 169
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Autre approche avec Select Case qui me semble plus simple à maintenir qu'une suite de Or
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Change()
     Dim CC As Range
     For Each CC In Selection
       Select Case CC.Value
         Case "j", "n", "rj", "rn", "rw"
          CC.Value = "d"
       End Select
     Next
     Set CC = Nothing
    End Sub
    et si l'on veux s'affranchir de la casse et des caractères espacés souvent cause de problèmes lors d'encodage manuel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Change2()
     Dim CC As Range
     For Each CC In Selection
       Select Case LCase(Trim(CC.Value))
         Case "j", "n", "rj", "rn", "rw"
          CC.Value = "d"
       End Select
     Next
     Set CC = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 14
    Dernier message: 12/05/2016, 13h39
  2. XL 2007: Remplacer des valeurs par d'autres sur une autre feuille
    Par redhotchilipeppers dans le forum Excel
    Réponses: 2
    Dernier message: 26/11/2014, 11h23
  3. Remplacer un "film" par un autre dans une interface
    Par Mizy57 dans le forum Interfaces Graphiques
    Réponses: 6
    Dernier message: 08/04/2013, 16h46
  4. Remplacer un caractère par un autre dans une String
    Par djack44 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 12/03/2008, 15h16
  5. Réponses: 3
    Dernier message: 21/07/2007, 01h48

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