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 :

VBA Excel Question


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut VBA Excel Question
    Bonjour et oui c encore moi je sais désolé mais j'aurais besoin de savoir comment faut il faire pour que mes nouvelles donnés de B.O une fois importer dans ma feuille excel ne soit pas conservé dans ma page d'arriver lorsque je les modifies.
    Autrement dit lorsque j'importe une première fois mes données B.O sur ma feuil3 et qui sont donc rediriger vers un tableau principal sur ma feuil1 grâce au code VBA ci-dessous et si j'en réimporte d'autres de B.O en supprimant les premières de ma feuill3 elles s'ajoute à la suite des autres sur ma feuil1 et non pardessus en fait.

    Aurait-il un moyen pour que les données s'installe par dessus automatiquement??????

    Voici le code que j'utilise pour transferer les données de ma feuill3 vers ma feuil1 :

    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 NBRAGV()
     
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
     
    Set ws1 = Worksheets("Feuil3") 'ou nom de ta feuille de départ
    Set ws2 = Worksheets("Feuil1") 'ou nom de ta feuille d'arrivée
     
    Const Col_Depart = 13 ' N° de colonne de ta feuille de départ
    Const Col_Arrivee = 16 'N° de colonne de ta feuille d'arrivée
     
    Const Ligne_Depart = 7 ' N° de ligne de ta feuille de départ
    Const Ligne_Arrivee = 23 'N° de ligne de ta feuille d'arrivée
     
    ws1.Activate
    ws1.Cells(Ligne_Depart, Col_Depart).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    ws2.Activate
    ws2.Cells(Ligne_Arrivee, Col_Arrivee).Activate
    ActiveSheet.Paste
     
    End Sub

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Tu dois déplacer ton curseur (ou ta référence de cellule) vers la première libre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Range("A1").End(xlDown).Offset(1,0).Select
    À Condition qu'il y ait déjà des données dans la Feuil1. Sinon, tu te retrouve complètement dans le bas de la feuille. Tu peux toujours vérifier l'adresse d'une cellule grâce à sa propirété Adress qui retourne l'adresse fixe (avec des $, exemple $A$65536).

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    Euh désolé suis novice je dois le mettre ou ce code dans le reste de mon code ????

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Ce que je veux dire, c'est que ta macro, telle qu'elle est écrite, écrasera toujours les données à l'arrivée parce que tes coordonnées d'arrivée sont fixe (dans des constantes). Il faudrait que tu puisse déterminer dynamiquement la plage d'arrivée pour ajouter les données toujours à la fin.

    Le code que j'ai donné n'est qu'un exemple qui sert à déterminer la première cellule libre dans la colonne A quand des données sont déjà inscrites.

    Tu connais les structures de contrôles de conditions If ?

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 170
    Par défaut
    Non en fait ce qui se passe c'est que mes données sont effectivement écrasé mais comme mon nombre de ligne est variable il arrive qu'il me reste des lignes des autres données.

    En fait j'aimerais que lorsque je relance ma macro avec mon bouton d'execution l'ensemble des données antèrieur de ma feuil1 soit effaceret remplacer par mes nouvelles.

    j'ai également une autre question mais concernant la mise en page :

    est il possible de cadrier mon tableau, de colorier les cellules de mon tableau, d'aligner le texte de mes cellules et de colorier les données de mes cellules avec un code sachant que mon nombre de ligne est variable et donc la taille de mon tableau ????


    Merci vbeaucoup pour vos réponse

  6. #6
    Membre chevronné Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Par défaut
    et bien tu fais une macro qui te supprime les lignes ^^

    du genre euh ....
    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
    Sub NBRAGV()
     
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
     
    Set ws1 = Worksheets("Feuil3") 'ou nom de ta feuille de départ
    Set ws2 = Worksheets("Feuil1") 'ou nom de ta feuille d'arrivée
     
    Const Col_Depart = 13 ' N° de colonne de ta feuille de départ
    Const Col_Arrivee = 16 'N° de colonne de ta feuille d'arrivée
     
    Const Ligne_Depart = 7 ' N° de ligne de ta feuille de départ
    Const Ligne_Arrivee = 23 'N° de ligne de ta feuille d'arrivée
     
    ws1.Activate
    ws1.Cells(Ligne_Depart, Col_Depart).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    ws2.Activate
    ws2.Cells(Ligne_Arrivee, Col_Arrivee).Activate
    Range(Selection, Selection.End(xlDown)).Delete
    ActiveSheet.Paste
     
    End Sub
    enfin peut etre à tester et modifier selon ton désir

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

Discussions similaires

  1. vba Excel question
    Par jojo456 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 02/06/2008, 10h16
  2. {VBA Excel}Question sur la lecture de fichier excel
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2007, 09h12
  3. {VBA Excel}Questions sur la creation graphique
    Par ferronimus dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 06/08/2007, 10h37
  4. [VBA-Excel] Question sur les Treeview
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/12/2006, 16h21
  5. [VBA][Excel]Petite question bête !
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/09/2005, 15h36

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