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 une recherche suivi d'un copier/coller


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
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Par défaut Macro pour une recherche suivi d'un copier/coller
    Bonjour,

    J'essaye désespérément d'écrire une macro avec 2 ou 3 critères de recherche, et que celle ci me copie/colle les infos dans une autre feuille.

    Voici comment est construit mon fichier:
    - 1 feuille CRImport (info importé via une macro)
    - 1 feuille Cash

    Je souhaites que ma feuille cash se complète automatiquement par rapport à ma feuille CRimport. Les critères de recherche sont:
    - la date,
    - le code analytique (imput) et si n° imput non trouvé par rapport au n° de commande.

    Je vous joins un extrait de mon tableau.

    Merci de votre aide, je continue à me creuser la tête de mon côté.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Bonjour,

    Des boucles imbriquées For each...Next ou For...Next devraient faire l'affaire
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each celCRImport In Worksheets("CRImport").Range("E2:E4")
        For Each celCash In Worksheets("Cash").Range("C8:C60")
            If celCRImport = celCash Then
     
            End If
        Next
    Next

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Par défaut
    Je comprends ce que tu veux dire mais en l'occurrence je ne me base que sur 1 seul critère si je suis ton raisonnement et non pas 2.

    Comment lui dire si le n° d'imputation et la date corresponde c'est à ce moment là que les infos s'inscrivent dans ma feuille Cash (a savoir qu'elles vont parfois devoir s'additionner).

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Il y a peut-être plus simple mais tu peux enchaîner avec une autre boucle lorsque la condition (celCRImport = celCash) est respectée

    Ton tableau n'étant pas très explicite au niveau de la date, je n'ai pu tester

    Sinon tu as toujours la fonction Sommeprod sans passer par vba

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 105
    Par défaut
    Je préfère passer par du VBP parce que mon CRImport est un extrait d'un autre fichier celui ci s'étend de mai 2008 et ira surement jusqu'à juin 2011, par conséquent cela m'évite de recopier des formules qui peuvent à la longue être erroné...

    J'avoue que mon fichier est un tout petit extrait mais c'était pour éviter de le surcharger.

    Je vais essayer de créer des boucles et je vous dirais demain si ça fonctionne.

    MErci

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    357
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2008
    Messages : 357
    Par défaut
    Essaye ce code, ça devrait fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For Each celCRImport In Worksheets("CRImport").Range("E2:E4")
        For Each celcash In Worksheets("Cash").Range("C8:C60")
            If (Mid(celCRImport, 1) = Mid(celcash, 1) Or celCRImport.Offset(0, -1).Value = celcash) And celcash <> "" Then
     
                For Each datecash In Worksheets("Cash").Range("E6:Z6")
                    If datecash <> "" And Month(datecash) = Month(celCRImport.Offset(0, -3).Value) And Year(datecash) = Year(celCRImport.Offset(0, -3).Value) Then
     
                    Worksheets("Cash").Cells(celcash.Row, datecash.Column) = Worksheets("Cash").Cells(celcash.Row, datecash.Column) + celCRImport.Offset(0, 4)
                    End If
                Next
            End If
        Next
    Next

Discussions similaires

  1. [XL-2013] Recherche suivi d'un Copier Coller d'information
    Par Laura-c dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 22/08/2013, 15h34
  2. Créer une recherche dans excel suivi d'un copier/coller
    Par Phoenix311 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/12/2012, 17h19
  3. [XL-2010] Macro ou Formule pour une recherche verticale avec condition
    Par Orsaylg dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/09/2010, 13h22
  4. Macro de recherche suivi d'un copier/coller
    Par Laura-c dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/10/2008, 14h23
  5. [VB.NET] Quel objet tableau pour une recherche indexée ???
    Par Kitano dans le forum Windows Forms
    Réponses: 7
    Dernier message: 02/09/2004, 09h38

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