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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    assistante administrative
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : assistante administrative

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    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
    13 176
    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 176
    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 expérimenté
    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
    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
    Membre à l'essai
    Femme Profil pro
    assistante administrative
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : assistante administrative

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    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 expérimenté
    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
    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
    Membre à l'essai
    Femme Profil pro
    assistante administrative
    Inscrit en
    Août 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : assistante administrative

    Informations forums :
    Inscription : Août 2014
    Messages : 5
    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

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