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 lignes si elle existe pas VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Mai 2018
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 93
    Par défaut Copier lignes si elle existe pas VBA
    Bonjour,

    J'ai actuellement une feuille de calcul avec un tableau composé de 4 colonnes différentes et déjà un certains de lignes dedans. Je voudrais que depuis une autre feuille, les lignes existent déjà dans la feuille contenant le tableau soient supprimer et celle qui n'existent pas soit copier à la suite dans l'autre feuille de calcul. Malheureusement je trouve pas les codes nécessaires à cette tâche sous forme de macro.

    Merci de votre aide et bon weekend.

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir
    Je voudrais que depuis une autre feuille, les lignes existent déjà dans la feuille contenant le tableau soient supprimer
    ça veut dire supprimer toutes les lignes du tableau .. alors supprimer tout le tableau non ???
    et celle qui n'existent pas soit copier à la suite dans l'autre feuille de calcul
    : pas claire du tout au moins pour moi !!
    essayer de bien présenter ton soucis et si nécessaire joindre un capture écran pour les données de départ et un capture écran pour le résultat attendu
    Le titre de la discussion est bizarre pour moi : copier ligne si elle n'existe pas
    Bonne fin de journée à toutes et à tous

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    pas tout a fait BENNARS
    c'est presque ca

    en fait il peut faire une chose tres simple avec tres peu de vba
    il copie la plage a tester en dessous la plage de destination et il fait un simple remove duplicate sur la colonne de son souhait

    exemple apres la copie sur destination
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("$A$1:$B$9").RemoveDuplicates Columns:=1, Header:=xlNo
    demo
    Nom : demo5.gif
Affichages : 1762
Taille : 192,8 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Mai 2018
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 93
    Par défaut
    Je pense que je me suis mal exprimé. Pour cela je vous fait parvenir un fichier excel pour exemple
    En gros j'ai 4 colonnes différentes correspondant à critères différents avec dans chaque colonne des noms ou des chiffres qui sont très variables. En gros, je réalise un copier/coller depuis une autre feuille de calcul dans mon tableau de la feuille "Donnée variable". Jusqu'à présent je m'amuse à rechercher dans ma feuille "Donnée fixe" si les 4 critères d'une ligne existe pas déjà ce qui est très long quand on a énormément de ligne à réaliser. Ce que je voudrais c'est grâce à un simple clique, mon macro face une recherche ligne par ligne pour qu'à la fin toutes les lignes inexistantes soient créaient dans ma feuille données fixes.
    Le résultat entendu est dans la feuille nommée "Après macro". J'ai mis des commentaires sur mes feuilles de calculs pour vous faciliter la compréhension.

    Merci d'avance et merci d'avoir pris du temps de me répondre
    Fichiers attachés Fichiers attachés

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    d'accords ce que tu appelle doublons c'est les lignes complete identique c'est ca ?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Mai 2018
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 93
    Par défaut
    Si c'est les 4 critères d'une seule et même ligne que tu appelles doublons, c'est bien ça

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re adapte ta colonne pour les deux plages
    j'ai commenté chaque ligne de code
    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()
        Set plagefinal = Sheets(2).Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)    'on prend la colonne"A" du sheets de destination jusque qu'a la derniere ligne utiliséee de la colonne
        Set plageoff = Sheets(1).Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)    'on prend la colonne"A" du sheets de destination jusque qu'a la derniere ligne utiliséee de la colonne
        For Each celX In plageoff    'on boucle donc sur toute les cellules utilisée de la colonne"A" du sheets a récupérer
            ok = False    'on met ok a false
            ligne1 = Application.Index(celX.Resize(1, 6).Value, 1, 0)    'on créé une chaine avec toutes les valeurs de la ligne (celX.row) du sheets a récupérer
            For Each celZ In plagefinal    'on boucle donc sur toute les cellules utilisée de la colonne"A" du sheets de destination
                If celZ = celX Then    'si la celz=la celX
                    ok = True    'on met ok a true ca veut dire que cette valeur en "A" existe sur les deux sheets
                    ligneoff = Application.Index(celZ.Resize(1, 6).Value, 1, 0)    'on créé une chaine avec toutes les valeurs de la ligne (celZ.row) du sheets de destination
    '                on teste maintenant les 2 chaines completes
                    If Join(ligne1) <> Join(ligneoff) Then Debug.Print "il faut transférer la ligne " & celX.Row & " du Sheets(1) dans le  Sheets(2)"
                End If
            Next
            'ici on traite ceux qui ont une valeur en "A" qui n'existe pas en sheets(2)grace a ok qui nous le signal
            If ok = False Then Debug.Print "il faut transférer la ligne " & celX.Row & " du Sheets(1) dans le  Sheets(2)"
        Next
    End Sub
    je supose que les lignes identifiées tu saura faire pour transférer
    si tu pige pas pose des questions
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Mai 2018
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 93
    Par défaut
    Je te remercie pour ta réponse si rapide

    Le "ok" n’apparaît pas est-ce normal? Est-il possible qu'à la place d'une alerte qui nous signal les lignes à copier, que notre macro copie directement à la suite du tableau final les lignes inexistantes?

    Merci pour ton implication.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    le ok n'est pas pour apparaitre mais pour signaler a la macro(dans 2d if) que la valeur en colonne"A" n'existe pas dans le sheets (2) donc la ligne est a copier

    pour copier la ligne directement a la place des debug ,tu a presque la solution dans le code avec l'index sur celX.resize
    je laisse toujours un peu de travail de reflexion afin de ne pas avoir a dire "q u il faut que je face tout" tu comprends

    si tu comprends le code que je t'ai donné tu saura faire si tu le comprends pas faudra peut etre revoir les bases
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Mai 2018
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Haute Loire (Auvergne)

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

    Informations forums :
    Inscription : Mai 2018
    Messages : 93
    Par défaut
    Voilà ce que j'ai essayé de faire mais malheureusement ça ne marche pas
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/07/2017, 16h31
  2. Ajouter une ligne si elle n'existe pas dans la table
    Par daimadoshi dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/11/2010, 15h52
  3. Réponses: 15
    Dernier message: 27/12/2009, 12h13
  4. creer la bd s'il elle existe pas
    Par Esil2008 dans le forum Hibernate
    Réponses: 2
    Dernier message: 27/10/2008, 15h44
  5. ajouter des lignes qd elles n'existent pas
    Par freestyler dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 30/01/2008, 15h28

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