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 :

Copier coller avec critères avancés [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut Copier coller avec critères avancés
    Bonjour à tous,

    Mon problème fait suite à la discussion :http://www.developpez.net/forums/d12...meme-classeur/

    Je m'explique, j'ai une macro qui copie les cellules d'un tableau (à 3 champs Numsecu, Nom, Club) contenu dans une feuille nommée Source pour les coller dans une autre nommée Copie selon le critère de ressemblance du champ "Numsecu" c-à-d que lorsque la valeur du champ "Numsecu"
    est la même dans chaque onglet alors toute la ligne correspondante est copiée dans Source puis collée dans Copie.

    Tout cela ma macro arrive à le faire sans problème, ce que je souhaite c'est de laisser vide les champs Nom et Club (dans la feuille Copie) quand Numsecu n'est pas le même dans chaque onglet.


    Pour mon exemple ci-joint, je veux qu'une fois ma macro exécuter, que les champs Nom et Club de Robinho et Ronaldo (de la feuille Copie) soient vides .




    Voici la code qui me fait la copie :
    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
    23
    Sub sc()
    Dim endlig As Long
    Dim i As Long
    Dim recherche As Range
    Dim c As Range
     
    With Sheets("Copie")
    endlig = .Cells(5, 5).End(xlDown).Row
     
        For i = 6 To endlig
     
            Set recherche = .Cells(i, 5)
            With Worksheets("Source").Range("D11:D14")
                Set c = .Find(recherche, LookIn:=xlValues)
                If Not c Is Nothing Then
                    recherche.Offset(0, 1) = c.Offset(0, 1)
                    recherche.Offset(0, 2) = c.Offset(0, 2)
                End If
            End With
        Next i
    End With
     
    End Sub

    Merci d'avance pour votre si précieuse



    Ci-joint mon fichier.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2012
    Messages : 85
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    j'ai un peu survolé ton message je n'ai pas vraiment le temps, mais il te serait possible de faire une macro comparaison qui ferait (après remplissage de toutes les cellules par ta première fonction) :

    • Comparer cellule (X1) de Feuil1 à la cellule (X2) de Feuil2
    • Si différent, vider la cellule


    Il y a possibilité de stocker les cellules dans des strings du coup du a juste une comparaison à faire entre 2 strings.

    Je ne sais pas si j'ai pu t'aider beaucoup ...

    Bon courage

    Cordialement

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    Bonjour,

    Si j’ai bien compris, pour réaliser le traitement tel que tu le décris, il suffit d’effacer les données Nom-Club de la feuille "Copie" puis de copier les données Nom-Club de la feuille "Source" si le même Numsécu est trouvé dans la feuille "Copie".
    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
    23
    24
    25
    26
    27
    28
    Option Explicit
    Sub sc()
    Dim WsSource As Worksheet
    Dim WsCopie As Worksheet
    Dim DerLigSource As Long, DerLigCopie As Long
    Dim PlageSource As Range, PlageCopie As Range, Cel As Range
    Dim Recherche As Range, c As Range
        Set WsSource = Worksheets("Source")
        Set WsCopie = Worksheets("Copie")
        DerLigSource = WsSource.Range("D" & WsSource.Rows.Count).End(xlUp).Row
        DerLigCopie = WsCopie.Range("E" & WsCopie.Rows.Count).End(xlUp).Row
        Set PlageSource = WsSource.Range("D11:D" & DerLigSource)
        Set PlageCopie = WsCopie.Range("E6:E" & DerLigCopie)
        'Effacement des données dans la feuille "Copie"
        PlageCopie.Offset(0, 1).Resize(, 2).ClearContents
        For Each Cel In PlageSource
            Set c = PlageCopie.Find(Cel, LookIn:=xlValues)
            If Not c Is Nothing Then
                c.Offset(0, 1) = Cel.Offset(0, 1)
                c.Offset(0, 2) = Cel.Offset(0, 2)
            End If
        Next
        Set c = Nothing
        Set PlageSource = Nothing
        Set PlageCopie = Nothing
        Set WsSource = Nothing
        Set WsCopie = Nothing
    End Sub
    Cordialement.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Bonjour gFZT82,

    Je te remercie vraiment pour ton aide ton code resoud mon problème ,

    Merci à toi également brownthefou .

    Je vais enfin avancée.

    Bon weekend A vous.

    Cordialement,

    Kedmard.

    Salut gFZT82,

    Il y a juste ceci que je n'arrive pas à interpreter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    PlageCopie.Offset(0, 1).Resize(, 2).ClearContents
        For Each Cel In PlageSource
            Set c = PlageCopie.Find(Cel, LookIn:=xlValues)
            If Not c Is Nothing Then
                c.Offset(0, 1) = Cel.Offset(0, 1)
                c.Offset(0, 2) = Cel.Offset(0, 2)
            End If
        Next
    pourrais-tu me donner une explication? Merci.

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    Par défaut
    PlageSource correspond à la plage des données Numsécu de la feuille "Source".
    PlageCopie correspond à la plage des données Numsécu de la feuille "Copie".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PlageCopie.Offset(0, 1).Resize(, 2).ClearContents
    Effacement des 2 colonnes à droite de la plage des données Numsécu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each Cel In PlageSource
              Set c = PlageCopie.Find(Cel, LookIn:=xlValues)
              If Not c Is Nothing Then
                        c.Offset(0, 1) = Cel.Offset(0, 1)
                        c.Offset(0, 2) = Cel.Offset(0, 2)
              End If
    Next
    Pour chaque cellule de la plage source,
    cherche la même valeur dans la plage cible
    Si cette équivalence est trouvée, alors
    copie le nom
    copie le club

    Cordialement.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut gFZT82,

    désolé pour cette réponse tardive, grand merci ton aide m'a été très précieuse .

    Cordialement,


    kedmard.

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

Discussions similaires

  1. [XL-2010] Copier coller avec critère
    Par sirine_ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/09/2014, 19h06
  2. Problemes avec copier/coller avec VI
    Par fgalves dans le forum Linux
    Réponses: 7
    Dernier message: 06/01/2009, 15h43
  3. copier-coller avec listbox
    Par LeNeutrino dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/01/2007, 13h06
  4. Fonction copier/coller avec un menu
    Par avogadro dans le forum Langage
    Réponses: 3
    Dernier message: 16/03/2006, 22h44
  5. copier coller avec Pastespecial en VBA
    Par stormless dans le forum Général VBA
    Réponses: 1
    Dernier message: 06/11/2005, 11h59

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