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 :

Copîe de cellules sous condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Par défaut Copîe de cellules sous condition
    Bonjour à tous,

    Je me tourne vers vous car j'ai un soucis à régler et je sais qu'ici il y a toujours une bonne âme pour donner une réponse.
    Je dois mettre le nez dans VBA pour apprendre les macros et cela me prend un peu de temps. En même temps, vous vous en doutez, j'ai un travail à rendre. Donc, ne connaissant pas encore VBA pouvez-vous m'aider ?
    Je mets actuellement plusieurs tableau sur un seul fichier Excel, mais dans plusieurs onglets. Dans chaque feuille, il y a des données qui se répètent. Mon but est d'éviter de ressaisir à chaque fois ces données.
    (J'aimerai pouvoir créer une base ACCESS mais pour l'instant, on me refuse l'accès. Sur Access j'aurais déjà résolu le problème).

    Ma feuille mère s'appelle "Préconisations".
    Pour me simplifier les choses j'ai nommé toutes mes colonnes.
    Dans cette feuille, je saisie plusieurs données dont le "Matricule", le "Nom", le "Prenom" etc.
    J'ouvre une feuille qui s'appelle "Reclassement". Dans cette feuille, si la cellule C2 (Matricule) est vide, rien ne se passe.
    Si le matricule saisie trouve une correspondance dans la feuille "Préconisations" en D2 (Matricule), les cellules suivantes doivent avoir les mêmes données (Nom, Prenom, etc...).

    Je ne sais pas si j'ai été très claire.

    J'ai essayé plusieurs manips mais, en formule de base, rien ne fonctionne, donc je pense qu'il faut créer une macro, mais là, je coince vraiment. Je n'ai pas encore la logique des macros sur Excel (alors que je connais plus tôt bien Access)

    Merci à vous de me venir en aide.

    Bonne journée !

    Katell

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour Katell,

    Es-tu obligée de faire une macro ? o_O
    Une simple =RECHERCHEV() répond très facilement à ton besoin...

    Bref, j'attends ton retour.
    Cordialement,
    Kimy

    Allez, sinon avec une procédure événementielle (j'ai utilisé Worksheet_Change, à placer dans "Reclassement" donc ) :
    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
    19
    20
    21
    22
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oRng As Range
    Dim i As Integer
     
    'On vérifie que la cellule qui change est dans la colonne 3 (C)
    If Not Application.Intersect(Target, Columns(3)) Is Nothing Then
        'Avec la feuille "Préconisations"...
        With Worksheets("Préconisations")
            '... on recherche la valeur insérée dans "Target" dans la colonne 4 (D).
            Set oRng = .Columns(4).Find(Target.Value, LookIn:=xlValues, LookAt:=xlWhole)
     
            'Si on ne trouve pas "rien" (ça veut dire qu'on trouve quelque chose)
            If Not oRng Is Nothing Then
                'alors les colonnes suivantes (ici 5 colonnes) sont copiées à côté de "Target"
                For i = 1 To 5
                    Target.Offset(0, i) = oRng.Offset(0, i)
                Next i
            End If
        End With
    End If
     
    End Sub
    Mais une =RECHERCHEV est plus simple.
    Ici ca change automatiquement les valeurs... si tu préfères...

    Cordialement,
    Kimy

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Par défaut
    Merci Kimy
    J'ai essayé avec RECHERCHV mais je n'ai rien obtenu.
    "=SI(ESTVIDE(A2);"";RECHERCHV(A2.Preconisation!MATRICULE;2))

    Je ne connais pas très bien cette fonction et j'ai surmènent dû me planter.

    Merci encore
    KATELL

  4. #4
    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 055
    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 055
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Tu as sans doute oublié d'utiliser le 4ème argument de la fonction RECHERCHEV
    Je ne connais pas très bien cette fonction et j'ai surmènent dû me planter.
    A lire Fonctions Excel à la loupe : N°1 - RECHERCHEV()
    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

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Par défaut
    Bonjour Philippe

    Merci une fois de plus de me venir en aide. Serais-tu le chevalier blanc ?

    Je pense que tu as raison, évidement, mais je me mélange encore les pinceaux. J'ai oublié qu'il fallait que ma recherche se fasse obligatoirement sur la 1er colonne.
    Je vais réessayer encore !

    Merci encore

    Katell

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Katell,

    Alors si j'ai bien compris, c'est-à-dire :
    1. Feuille "Préconisation" avec "Matricule" en colonne D et données en E, F, G, ...
    2. Feuille "Reclassement" avec "Matricule" en colonne C et données en D, E, F, ...

    alors, en D1 (de "Reclassement"), tu places =RECHERCHEV($C1;Préconisations!$D$1:$F$17;2;FAUX). Le 17 doit être remplacé par ta dernière ligne non-vide de "Préconisation", tu auras compris, j'espère.
    En E1, ça sera donc =RECHERCHEV($C1;Préconisations!$D$1:$F$17;3;FAUX), mais tu as compris également avec le tuto !
    Et ainsi de suite pour toutes les colonnes par la suite.
    Enfin, quand tu auras déjà adapté ça, tu verras que changer tes éléments en colonne C récupérera automatique les valeurs de la feuille "Préconisation".

    Dans un second temps, tu pourras essayé la procédure événementielle que je t'ai donnée pour encore plus de commodité... mais ça, ça sera après.

    N'hésite pas à revenir vers nous.

    Cordialement,
    Kimy

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 18
    Par défaut
    Voici la formule que je tape, elle ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTVIDE(C4);"";RECHERCHEV(C4;Preconisations!A:A;4;FAUX))
    Sachant que :
    - "C4" est la cellule "Matricule" de la feuille "Reclassement"
    - "Préconisations!A:A " est la colonne que j'ai nommé "PRECOMATRICULE"
    - la colonne a recopié est la "4" ou "PRECONOM"

    Je ne sais plus ensuite.
    Merci à tous !

    Katell

  8. #8
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Preconisations!A:A ne prends que la colonne A. Élargi à la colonne souhaitée afin de récupérer les données.

    Préconisation : ne prend pas tout une colonne mais plutôt les données uniquement : Préconisations!$D$1:$F$2000.
    /!\ Attention : les "$" sont très importants dans ce cas car les cellules doivent être fixes.

    Cordialement,
    Kimy

  9. #9
    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 055
    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 055
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans ma réponse, je t'ai donné le lien d'un tutoriel à lire sur cette fonction, il faudrait tout de même prendre l'a peine de le faire.
    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. [XL-2000] Saisie dans des cellules sous conditions
    Par cedana dans le forum Excel
    Réponses: 3
    Dernier message: 14/01/2010, 15h00
  2. suppression cellules sous condition
    Par bizjet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2009, 17h06
  3. [XL-2003] faire Clignoter une cellule sous condition
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/06/2009, 19h49
  4. macro vba identifier cellule sous condition
    Par yanacrux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/03/2009, 15h00
  5. colorer des cellules sous conditions
    Par coenonympha dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2008, 14h54

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