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 d'un dossier dans un autre avec un tri


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut Transferer des données d'un dossier dans un autre avec un tri
    Bonjour tout le monde,
    je viens à vous car j'ai un pb!!! J'ai regardé sur les anciens messages qui parlaient de la même chose que moi mais je n'ai rien compris....

    Je dois créer un programme en compta, et en faite je voudrai créer un bouton qui aille chercher des informations dans un autre dossier (qui changerait tous les mois) ,et, où, par exemple, je voudrai que ce bouton me permette de transferer des lignes informations qui posséderaient le début du compte 68, le nombre de comptes peut varier par exemple un mois il y en a trois et l'autre 4 comment peut-on prendre en compte cette variation?

    Je vous remercie par avance de m'éclairer!!!

  2. #2
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 66
    Points
    66
    Par défaut
    Essai d'être un peu plus clair dans ton explication, parce que je n'arrive pas trop à cerner ton problème pour le moment

    Mais tel que je vois ton cas, avec le peu que j'ai compris, je pense que ça sera des liaisons qu'il te faudra

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Désolé...

    En faite j'ai un classeur "A" où j'aimerai insérer des informations qui se trouveront dans un classeur "B".
    Mon problème c'est que des comptes peuvent se rajouter entre temps donc ce que j'aimerais pouvoir réaliser c par exemple extraire les informations qui commence par le compte 68 ou par exemple 64.

  4. #4
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 66
    Points
    66
    Par défaut
    Eh bien dans ce cas, je te conseille fortement les données Externes. Dans le menu Excel > Données > Données Externes et tu fais créer une requête.

    Dans ton cas, je pense que l'assistant va suffir. Essai de faire quelques tests déjà pour prendre l'habitude avec la fonction et tu verras que par la suite c'est un vrai jeu d'enfant

    Si tu veux plus de détails, n'hésite surtout pas, on va essayer de faire notre possible pour te dépanner

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup!
    je v essayer et je vous tiens au courant si ca fonctionne!!!


  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Re...
    Ca ne fonctionne pas car lorsque j'arrive pour réaliser ma requête aucune table existe vu que ma source vient d'une "balance comptable" et je ne peux pas créer une table...

    Je voulais savoir si j'importe les données de ma balance dans access si ca pouvait marcher?

  7. #7
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Hello,

    As tu essayé de faire une macro avec un filtre ou tu recupererai les lignes qui correspondent à un numéro de compte ?

    Attention toutefois à que ton numéro de compte soit au format texte et non pas au format nombre.

    Cdlt,
    Drost

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Oui j'ai essayé ms il y a un pb voici la macro :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    Sub Macro1()
        Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAnd
        ActiveCell.Offset(8, -3).Range("A1").Select
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(-75, -2).Range("A1").Select
        ActiveSheet.Paste
        Windows("Balance holding.xls").Activate
        ActiveCell.Offset(0, 3).Range("A1").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(0, 1).Range("A1").Select
        ActiveSheet.Paste
        Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:="=70603000", Operator:=xlAnd
        ActiveCell.Offset(2, -3).Range("A1").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(2, -1).Range("A1").Select
        ActiveSheet.Paste
        Windows("Balance holding.xls").Activate
        ActiveCell.Offset(0, 3).Range("A1").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(0, 1).Range("A1").Select
        ActiveSheet.Paste
        Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:=">58000000", Operator:=xlAnd, _
            Criteria2:="<63120000"
        ActiveCell.Offset(-99, -3).Range("A1:A56").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(3, -1).Range("A1").Select
        ActiveSheet.Paste
        ActiveWindow.SmallScroll Down:=48
        Windows("Balance holding.xls").Activate
        ActiveCell.Offset(0, 2).Range("A1:B56").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveWindow.SmallScroll Down:=-39
        ActiveCell.Offset(0, 1).Range("A1").Select
        ActiveSheet.Paste
        Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:=">62441000", Operator:=xlAnd, _
            Criteria2:="<62511000"
        ActiveCell.Offset(29, -2).Range("A1:A10").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveWindow.SmallScroll Down:=51
        ActiveCell.Offset(57, -1).Range("A1").Select
        ActiveSheet.Paste
        Windows("Balance holding.xls").Activate
        ActiveCell.Offset(0, 2).Range("A1:A10").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(0, 1).Range("A1").Select
        ActiveSheet.Paste
        ActiveWindow.SmallScroll Down:=9
        Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:=">62812000", Operator:=xlAnd, _
            Criteria2:="<64110000"
        ActiveCell.Offset(27, -2).Range("A1:A7").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(11, -1).Range("A1").Select
        ActiveSheet.Paste
        Windows("Balance holding.xls").Activate
        ActiveCell.Offset(0, 2).Range("A1:A7").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(0, 1).Range("A1").Select
        ActiveSheet.Paste
        ActiveCell.Offset(7, -1).Range("A1").Select
        Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:="67120000"
        ActiveCell.Offset(34, -2).Range("A1").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveSheet.Paste
        Windows("Balance holding.xls").Activate
        ActiveCell.Offset(0, 2).Range("A1").Select
        Application.CutCopyMode = False
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        ActiveCell.Offset(0, 1).Range("A1").Select
        ActiveSheet.Paste
        ActiveWindow.SmallScroll Down:=9
    End Sub
    Ca bloque à la ligne rouge et je ne comprends vraiment pas pourquoi!

  9. #9
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Re^^

    Si tu est dans la Cellule A1 tu pourra difficilement reculer de 3 colonnes!

    Soit tu dois selectionner une autre case avant de faire ton offset.

    Personnelement je prefere utiliser Cells().select, Range(Selection, Selection.End(xlUp)).Select et Range(Selection, Selection.End(xlToRight)).Select qui sont bien plus simple d'utilisation pour faire des selections !


  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    je voudrai savoir si en plus je peux demander à ma macro de copier les cases remplies vu que chaque mois ça va changer.

    Par exemple un mois j'ai :

    681
    682
    je veux qui sélectionne que ces deux lignes
    et le mois suivant il y a

    681
    682
    683
    684
    685
    Je veux qu'il puisse sélectionnes toutes ces cases!

    Est ce faisable?

  11. #11
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Février 2006
    Messages : 79
    Points : 66
    Points
    66
    Par défaut
    Tu peux faire une boucle non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim i as integer
     
    i = 1
     
    While Cells(i,1) <> "" '1 représente ici la colonne
     
    Cells(i,1).copy
    ....
     
    Wend

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    A partir de tes conseils voici ce que j'ai fait :

    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 Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 09/10/2007 '
    
    '
        Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAn
        Cells(2, 1).Select    Range(Selection, Selection.End(xlUp)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        Feuil3.Range("A12:A12").PasteSpecial
        Operation = xlPasteSpecialOperationNone
     End Sub
    cependant j'ai un pb sur la ligne rouge car en faite la c'est que je veux sélectionner la deuxième ligne dans la colonne 1. Cependant lorsque je fais mes filtres ce n'est pas la ligne 2 mais par ex c'est la ligne 62; 98; 214...
    sais tu comment faire a partir de ce que j'ai fais...

    J'ai essayé aussi :

    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 Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 09/10/2007 
    '
     
    '
        Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAnd
        Dim i As Integer
        i = 1
        While Cells(i, 1) <> "" '1 représente ici la colonne
        Cells(i, 1).Copy
        Windows("Ventilation des charges.xls").Activate
        Feuil3.Range("A12:A12").PasteSpecial
        Operation = xlPasteSpecialOperationNone
    Wend
     End Sub

    Mais rien ne se copie pire je tombe sur la feuille balance holding!

  13. #13
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Re^^

    Je comprends ton problème, il arrive qu'en fonction de ton filtre la deuxième ligne n'est pas forcement la ligne n°2! Je te conseille alors de faire ta copie avec les titres de tes filtres qui eux ne bougerons pas! Si par la suite tu n'en as pas besoin tu n'aura qu'a la supprimer une fois que ton collage a été fait

    J'espere que j'ai été assez clair!

    @ Plouss

    Drosty

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Je vais essayer ce soir mais je ne sais pas faire les filtres déjà prédéfini donc je vais m'aider de l'aide tout d'abord!!!

    merci beaucoup

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Salut drost,

    Désolé mais j'y suis pas arrivé! je ne comprend pas vraiment ce que tu veux que je fasse!

  16. #16
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Hello,

    Désolé mais j'ai eu pas mal de taff ces derniers temps^^

    En fait ton filtre est correct! C'est au moment de ta copie qui pose problème.
    Ne fait pas ta selection par rapport a ta deuxieme ligne mais par la premiere avec l'ensemble des intitulés de tes colonnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAn
        Cells(1, 1).Select    Range(Selection, Selection.End(xlUp)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        Feuil3.Range("A12:A12").PasteSpecial
        Operation = xlPasteSpecialOperationNone
     End Sub
    Tchuss (Et encore dsl pour le retard!)

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Merci drost je vais regarder!!!

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    Désolé mais la ligne marron me met erreure!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 09/10/2007
    
      Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAn
        Cells(1, 1).Select Range(Selection, Selection.End(xlUp)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        Feuil3.Range("A12:A12").PasteSpecial
        Operation = xlPasteSpecialOperationNone
     End Sub
    Allez on va y arriver!!!!

  19. #19
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Voila!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAnd
    Cells(1, 1).Select Range(Selection, Selection.End(xlDown)).Select

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2007
    Messages : 62
    Points : 15
    Points
    15
    Par défaut
    J'ai un message d'erreur :
    "Erreure d'exécution 450" sur la ligne marron


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Macro1()
    '
    ' Macro1 Macro
    ' Macro enregistrée le 09/10/2007
    
      Windows("Balance holding.xls").Activate
        Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAnd
    Cells(1, 1).Select Range(Selection, Selection.End(xlDown)).Select    
    Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Windows("Ventilation des charges.xls").Activate
        Feuil3.Range("A12:A12").PasteSpecial
        Operation = xlPasteSpecialOperationNone
     End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. script SQL qui réinsère des Données d'une BD dans une autre BD.
    Par kamaldev dans le forum Administration
    Réponses: 1
    Dernier message: 19/04/2007, 14h01
  2. [VBA-E]transposer des données d'une feuille dans une autre
    Par lio62 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 26/03/2007, 18h47
  3. Réponses: 6
    Dernier message: 01/08/2006, 18h45
  4. recopi des données d'une table dans une autre
    Par moicats dans le forum Access
    Réponses: 5
    Dernier message: 06/04/2006, 21h12
  5. concatenation des données d'une table dans une autre
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 04/10/2004, 11h38

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