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 :

Transferer des données avec des conditions VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    assistante administrative
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : assistante administrative

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Transferer des données avec des conditions VBA
    Bonjour,

    Je suis nouvelle sur le forum car je suis à la recherche d'un peu d'aide sur mon projet en VBA.
    Je maitrise assez bien EXCEL mais VBA, je me suis plongée dedans depuis peu.

    Voici la situation :

    J'ai 2 Classeurs :" Fichier de Base" et "Tableau Suivi Formation"

    Mon "Tableau Suivi Formation" comporte 2 feuilles : "Fichier à Garder" et "Fichier à Modifier"
    - "Fichier à Garder " sert juste au report des données de "fichier de base"
    - "Fichier à modifier" me permet de garder mes données et de les modifier si nécessaire (sans qu'il y ai un impact sur le "fichier de base")
    La feuille "Fichier à Garder" est reliée au classeur "Fichier de base" par des formules excel.
    Le classeur "fichier de base" est mise à jour quotidiennement et donc les données changent tous le temps.

    Dans mon "Tableau Suivi Formation", j'ai essayé avec des formules excel pour faire copier/coller les données de "fichier à garder" vers "fichier à modifier" afin de pas perdre les données mais des qu'il y a la mise à jour mes données sont écrasées.

    J'ai recherché sur internet, acheter des livres mais je ne suis pas arriver à trouver ce que je voulais.

    j'aimerai que dans le classeur ""Tableau Suivi Formation", sur la feuille "Fichier à modifier" : un bouton permettant la copie des données récentes en dessous des anciennes sans que cela les écrases.

    Créer un bouton, j'ai trouvé comment faire, mais c'est la macro que je n'arrive pas.
    J'ai essayé avec l'enregistrement automatique puis de changer pas à pas mais rien ne marche et je commence à perdre espoir de réussite.

    J'ai trouvé par hasard un fichier qui ressemble à ce que je recherche (copie modele 1) mais des que j'essaye de changer les noms des données cela ne marche pas.

    Pensez vous que la formule de"copie modele" peut etre adapté à mon tableau?
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    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 : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pensez vous que la formule de"copie modele" peut etre adapté à mon tableau?
    et quelle est cette formule ?
    Il serait bon que tu affiches ici cette formule (entre les balises prévues à cet effet) plutôt que de déposer une foule de classeurs que très peu d'intervenants vont ouvrir et qui n'apporte pas grand chose à la collectivité membre de ce forum.
    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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    j'aimerai que dans le classeur ""Tableau Suivi Formation", sur la feuille "Fichier à modifier" : un bouton permettant la copie des données récentes en dessous des anciennes sans que cela les écrases.
    Comment identifies tu tes données anciennes? Est-ce que les données des deux feuilles sont triées de la même manière? Tes données nouvelles sont insérées dans tes données anciennes de manière aléatoire?

    Bonjour,

    1°) Tu fais un Vlookup par rapport à ta référence
    2°) Si ta référence n'est pas trouvée alors tu copie la ligne dans ta première ligne vide dans ta feuille destination.

    Simplement

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    assistante administrative
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : assistante administrative

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Voici le code de la macro qui est le bouton du tableau Copie Modele :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Transférer()
    Dim plage As Range
    On Error Resume Next 'au cas où la colonne A est vide
    Set plage = Columns("A").SpecialCells(xlCellTypeConstants).EntireRow
    With Sheets("Sheet2")
      Cells.Copy .Cells 'pour copier les dimensions des colonnes
      .Cells.Clear
      plage.Copy .Rows(5)
      .Columns("B").Delete
      .Activate 'facultatif
    End With
    End Sub
    Sauf que je n'ai pas de colonne à supprimer

    Et pour répondre à ta question
    Comment identifies tu tes données anciennes? Est-ce que les données des deux feuilles sont triées de la même manière? Tes données nouvelles sont insérées dans tes données anciennes de manière aléatoire? .
    j'aurais pensé qu'avant de coller, le code dectecte la 1ere cellule vide sous les dernieres données et apres il colle.
    Je recherche cette formule qui permet cette detection entre les forums et les livres.

    Et mes données seront dans les memes colonnes et il y aura juste un filtre si il y a besoin de rechercher.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    La ligne qui supprime la colonne B c'est:

    Dans une troisième feuille, tu copies ta feuille de base.

    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
     
    Sub RecupNomOnglet2()
     
            Dim WsName As String
     
                For Cpt = 1 To 1
     
            WsName = "Feuille d'origine" & Cpt
             Sheets("Feuille d'origine").Copy After:=Worksheets("Feuille d'origine")
                   ActiveSheet.Name = "Feuille de destination"
     
                 Next Cpt
     
     
        End Sub
    Ensuite tu fais ça

    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
    29
     
    Sub Immo_TA()
    Application.ScreenUpdating = False
    Dim i As Integer
    Sheets("Feuille de destination").Select
           'Ta feuilel de destination c'est la feuille 3 que tu viens de créer
     
                  Range("A2:BE3000").Sort key1:=Range("A2"), order1:=xlAscending
                  'Pour être sure qu'il y ai le tri de A à Z sur la colonne A
     
    With ThisWorkbook.Sheets("Feuille de destination")
    'Précisez le nom de la feuille
     
                For i = .Range("A" & .Rows.count).End(xlUp).Row To 2 Step -1
    'je travaille sur la colonne A,
     
    'Rows.count permet de retourner le nombre de ligne de la plage range
     
                            If .Sheets("Feuille de destination").Range("A" & i).Value <> Sheets("Feuille d'origine").Range("A" & i).Value = "TA" Then
                                       .Rows(i).Copy Destination:=Sheets("Fichier à modifier").Range("A2").End(xlUp)(1).Row
    'Je copie cette ligne dans la première ligne vide de ma feuille("Fichier à modifier")
                                          .Rows(i).delete
    'Je supprime cette ligne
     
                            End If
                Next i
    End With
     
    End Sub
    Et voilà

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    assistante administrative
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : assistante administrative

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    j'ai essayé les formules.

    Cela me créer bien la la 3eme feuille, et me recopie bien la formule mais il y a quelques problemes :

    - cela me recopie les formules et moi j'aimerai les valeurs seulement.
    - Et quand il y a une mise à jour quotidienne, cela ne marche pas.
    Or ce que j'aimerai c'est que sur ma feuille existante "fichier à modifier", les données soient intégrer les unes en dessous des autres et non pas sur une autre feuille.

    En gros voici en français ce que je voudrais :

    Si la 1ere ligne A2 de "fichier à garder" est non vide, alors copie seulement les valeurs dans les colonnes correspondantes dans la feuille "fichier à modifier" dans la 1ere ligne vide detecté en dessous des autres données .
    La macro recommence mais avec la ligne du dessous etc....

    Sans que cela m'écrase les données anciennes, les mise à jours seront inscrites en dessous.

    La mise à jour peut avoir 5 lignes comme 500 lignes, donc je ne peux pas donner de plage fixe.

    Est ce que j'arrive à me faire comprendre

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    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 : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    - cela me recopie les formules et moi j'aimerai les valeurs seulement
    La syntaxe est plage.Value = plage.Value
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shtDb.Range("A21:M24").Value = shtDb.Range("A21:M24").Value
    Or ce que j'aimerai c'est que sur ma feuille existante "fichier à modifier", les données soient intégrer les unes en dessous des autres et non pas sur une autre feuille.
    Il y a une procédure prête à l'emploi à télécharger ici VBA Excel – Regrouper plusieurs feuilles sur une autre où bien entendu si l'on peut copier plusieurs feuilles sur une autre on peut en copier une
    La syntaxe est très simple ExportTable FeuilleSource, FeuilleCible et les arguments optionnels qui suivent permettent de copier en début de feuille ou à la suite de la plage déjà occupée, de garder les formules ou pas (ValueOnly)
    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

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    assistante administrative
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : assistante administrative

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je suis vraiment nulle car j'ai essayé de changer juste certains éléments, de retaper la formule pour comprendre, de m'aider à des livres pour comprendre tes codes mais je n'y comprends rien. Je suis vraiment débutante en VBA et ça ce voit.

    J'ai meme essayé d'adapter mon tableau sur tes modeles mais rien.

    Bref, je vais essayé de trouvé une solution beaucoups plus simple avec 2 formules trouvées.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    Peux tu me dire pourquoi si tu es nul en vba tu essais absolument de vouloir modifier le fichier de Philippe ?

    Pourquoi ne te contente tu pas de copier tes feuilles?

    N'est-il pas plus simple pour toi d'avoir dans une troisième feuille les nouvelles valeurs?

    Si tu importes ta feuille deux ( dans la feuille export) puis ta feuille 3 (avec les nouvelles données) cela ne fait-il pas le travail?

    Une fois le travail fait ne peux-tu pas simplement recopier la feuille export et la renommer par le nom de ta feuille 2 modifiée?

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    assistante administrative
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : assistante administrative

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Avec le code ci dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Transférer()
    Dim plage As Range
    On Error Resume Next 'au cas où la colonne A est vide
    Set plage = Columns("A").SpecialCells(xlCellTypeConstants).EntireRow
    With Sheets("Fichier à Modifier")
      Cells.Copy .Cells 'pour copier les dimensions des colonnes
        .Activate 'facultatif
    End With
    End Sub
    est il possible de rajouter la dectection de la derniere cellule non vide de ma feuille "FICHIER A MODIFIER" avant que cela transfere que les valeurs?

    je sais que la formule de la detection c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DerniereLigne As Integer
    derniereLigne=Range("A65536").end(xlup).row+1
    J'ai du mal à combiner les formules

Discussions similaires

  1. Importer des données avec une condition
    Par marcelstan dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/05/2014, 16h53
  2. Ajout des données avec une condition
    Par jean sami dans le forum SQL
    Réponses: 2
    Dernier message: 15/09/2008, 06h21
  3. Réponses: 2
    Dernier message: 30/12/2006, 10h50
  4. [Tableaux] Trier des données avec des tableaux
    Par yobogs dans le forum Langage
    Réponses: 2
    Dernier message: 31/10/2006, 13h39

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