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 :

macro pour rechercher une cellule puis la remplacer par la valeur d'une autre cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 21
    Points : 13
    Points
    13
    Par défaut macro pour rechercher une cellule puis la remplacer par la valeur d'une autre cellule
    Bonjour,
    voilà mon problème:
    j'ai 2 tableaux excel.
    Le premier est un tableau qui représente un planning mensuel pour 5 personnes ( noms en ordonnée et jour du mois en abscisses). A l'intérieur du tableau, Il y a donc des lettres comme p=présent ou X=permanence
    Le second tableau est une ligne qui donne pour chaque jour du même mois le total des heures de X=permanence.
    Mon objectif, c'est donc de substituer automatiquement au premier tableau le X par le total des heures calculées dans le second tableau.
    Après quelques essais de fonctions et un essai de vba, je n'y arrive toujours pas.
    En pièce jointe mes tableaux excell.
    Merci d'avance pour votre aide et bravo à ce forum fort utile.
    Stéphane
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonsoir,
    Un exemple selon le contexte de ton fichier, donc à adapter,
    Faire une recherche sur internet :
    - vba les variables tableaux (existe dans la faq de développez)
    - vba manipuler les chaînes de caractères (existe dans la faq de développez)
    Code : 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
    Sub Test()
    VA = ActiveSheet.Range("C7: AF17")
        For j = LBound(VA, 2) To UBound(VA, 2)
            For i = LBound(VA) To UBound(VA) - 4
                If VA(i, j) = "X" Then
                    VA(i, j) = VA(UBound(VA), j)
                    Cel = Cel & Split(Columns(j + 2).Address, "$")(2) & i + 6 & " "
                End If
            Next
        Next
            Cel = Replace(Trim(Cel), " ", ", ")
    Application.ScreenUpdating = False
        With ActiveSheet
            .Range("C7: AF17") = VA
            .Range(Cel).NumberFormat = "hh:mm"
        End With
    Application.ScreenUpdating = True
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 21
    Points : 13
    Points
    13
    Par défaut merci pour ta réponse
    Merci encore pour ton aide.
    Je teste et regarde tout ce dont tu m'as parlé.
    Stéphane

  4. #4
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2016
    Messages : 21
    Points : 13
    Points
    13
    Par défaut macro au top
    Cela fonctionne au top!!!
    Maintenant j'ai pas tout compris dans le code va falloir que je travaille cela pour ajouter une même condition pour la lettre A pour le samedi et dimanche. A voir.
    Merci encore
    Stéphane

  5. #5
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re,

    Rien ne t'empêche d'essayer de commenté mon code
    utilise la touche F8 pour lancer la porcédure afin de faire du pas à pas dans le code en ayant pris soin d'afficher avant la fenêtre des variables locales.Pour obtenir de l'aide sur un morceau de code, utilises F1 (exemple tu te mets sur Column (cf code ci-dessous) et tu appuis sur F1)

    - autre solution serait d'utiliser Find next dans la plage déterminé et à chaque valeurs trouvées (X), on lui fait correspondre la valeur qui la remplace
    Avec Valeur trouvée => obtenir son adresse pour en déduire la colonne (la ligne de la valeur de remplacement, elle, étant déjà connu) => avec la colonne et la ligne on obtient l'adresse de la valeur de remplacement

    - autre solution : utiliser une boucle for each pour la plage déterminé avec à l'intérieur une condition qd la valeur est égal à X alors mettre la valeur de remplacement (ici aussi on a besoin d'obtenir la colonne, la ligne étant tjs connue)
    un exemple bâclé (mais plus simple pour toi)- remet ces valeurs aux mêmes emplacement dans un nouveau fichier et voit ce que fait ce code:
    A B C
    1
    2
    3 X
    4
    5 X
    6
    7
    8
    9
    10 Valeur1 Valeur2 Valeur3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test2()
    MaligneConnue = 10
    For Each V In Range("A1:C5")
        If V = "X" Then
            MsgBox "je récupère ma colonne : " & V.Column
            MsgBox "Adresse de ma valeur de remplacement : " & Cells(MaligneConnue, V.Column).Address
            MsgBox "Donc voilà le résultat : " & vbCrLf & "V.Value = Cells(MaligneConnue, V.Column).Value" & vbCrLf & _
            "V.Value = " & Cells(MaligneConnue, V.Column).Value
            V.Value = Cells(MaligneConnue, V.Column).Value
        End If
    Next
    End Sub
    Attention : si dans la façon de procéder il y a un décalage ne pas oublier d'inclure ce décalage dans le code (ce que j'ai fait sur mon code en post #2)

    Voilà des liens utiles :
    Vos premiers pas dans l'éditeur de macros Excel
    Excel et l'enregistreur de macro
    Apprendre la programmation en VBA pour EXCEL par la pratique - Première partie
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

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

Discussions similaires

  1. [XL-2003] Macro pour rechercher une valeur en fonction de la valeur d'une cellule
    Par Rook93 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2013, 11h42
  2. Réponses: 1
    Dernier message: 25/12/2012, 21h04
  3. Réponses: 3
    Dernier message: 11/03/2010, 11h44
  4. [POO] Créer une instance d'un objet par la valeur d'une variable
    Par philworks dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/11/2007, 14h27
  5. Réponses: 4
    Dernier message: 10/08/2007, 12h02

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