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 pour excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Points : 12
    Points
    12
    Par défaut vba pour excel
    Bonjour à vous tous
    Voici mon problème
    j'ai trois feuilles, montreal, region, tous
    les trois feuilles ont les mêmes colonnes ( nom, prénom, adresse, ville, etc.)
    Je rentre des noms dans la feuille montreal et region. J'ai besoin d'une macro qui prendra les noms des deux feuilles et les copieront dans la feuille tous. Le code que vous voyez en bas fait très bien le travail. Par contre, si je change une donnée sur la feuille montreal ou region et que l'employé est déjà dans la feuille tous, les données ne se mettent pas à jour. Voici un exemple. Dans la feuille montréal j'écris

    Tremblay Erick Finance
    je pèse sur la macro, elle copie les donneés dans la feuille tous
    je me rends compte que Erick ne prend pas de "K" je retourne sur la feuille montréal, corrige le nom, et quand je pèse sur la macro, elle ne fait pas le changement parceque le nom est déjà transféré.

    Est-ce que quelqu'un peut m'aider.
    Voici mon code
    Marc

    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 fusion()
     
        Dim c As Range, PlageRecap As Range, Plage As Range
        Dim Ligne As Long
        Sheets("tous").Select
        Set PlageRecap = Range("A1", Range("A65536").End(xlUp))
        Ligne = PlageRecap.Rows.Count + 1
        Sheets("region").Select
        Set Plage = Range("A2", Range("A65536").End(xlUp))
        For Each c In Plage
            If Not IsNumeric(Application.Match(c, PlageRecap, 0)) Then
                c.EntireRow.Copy Sheets("tous").Cells(Ligne, 1)
                Ligne = Ligne + 1
            End If
        Next c
        Sheets("montreal").Select
        Set Plage = Range("A2", Range("A65536").End(xlUp))
        For Each c In Plage
            If Not IsNumeric(Application.Match(c, PlageRecap, 0)) Then
                c.EntireRow.Copy Sheets("tous").Cells(Ligne, 1)
                Ligne = Ligne + 1
            End If
        Next c
    End Sub

  2. #2
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Vite fait, je vois 2 solutions rapides :
    - utiliser une seule feuille, ajouter une colonne avec le choix "Montreal" ou "Region", et puis utiliser les filtres d'excel sur cette colonne pour afficher seulement les lignes avec Montreal ou seulement les lignes avec Region. Mais bon je suppose que si tu as 3 feuilles c'est que tu en as besoin
    - Réinitialiser ta feuille "tous" à chaque lancement de macro : tu rajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("tous").cells.value=""
    avant de lancer ton calcul
    - et si tu ne veux pas réinitialiser les données de la feuille "tous", une fois que tu as "matché" que la ligne existe dans les deux feuilles, tu te débrouilles pour trouver à quelle ligne ça correspond dans la feuille "tous" et comparer cellule par cellule, si tu trouves une différence, tu remplaces, mais bon dans ce cas je vois pas pourquoi tu ne réinitialises pas ta feuille entière

    Cwain (2 solutions=3 en fait)

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Points : 12
    Points
    12
    Par défaut vba pour excel
    Merci Cwain

    mais dans ton code après le symbole =, tu as écrit ""
    ajoutes quoi à l'intérieur des guillemets, s'il y a quelque chose à rajouter bien sur.

    merci de ton aide
    marc

  4. #4
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    justement, c'est pour supprimer toute valeur, pour réinitialiser ta feuille

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Points : 12
    Points
    12
    Par défaut vba pour excel
    Je viens d'essayer, cela fonctionne pas, elle refait le travail, mais n'efface pas les données déjà dans la feuille

    merci de m'aider

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut
    utilise par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    worksheets ("tous").range ("a1").CurrentRegion.clearcontents

  7. #7
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    Comprend pas, ça marche chez moi
    sinon le ClearContents est plus propre effectivement
    Sheets("tous").Cells.Clearcontents pour tout effacer
    sinon carrément supprimer l'onglet et en créer un qui s'appelle "tous" mais c'est un peu beaucoup pour une petite manip

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 17
    Points : 12
    Points
    12
    Par défaut vba pour excel
    Meric à tous ceux qui ont travaillé sur le projet. Tout fonctionne à merveille. Un gros merci

    Marc

  9. #9
    Membre habitué Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Points : 181
    Points
    181
    Par défaut
    heu.. tu as utilisé quoi finalement ?

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

Discussions similaires

  1. [VBA pour Excel] Différence entre activate et select
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/10/2008, 17h20
  2. VBA pour Excel pour les nuls
    Par doudoudidou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/02/2007, 12h15
  3. [VBA-E] Help création d'un programme vba pour excel
    Par yampi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/01/2007, 11h46
  4. [VBA-E] tri sur VBA pour Excel
    Par mariedrouin dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/05/2006, 13h32
  5. Réaliser une macro en VBA pour excel afin de créer un graphe
    Par xavier le breuil dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/12/2005, 14h41

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