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 :

Recopie de données sur un autre tableau [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut Recopie de données sur un autre tableau
    Salut a tous,

    Voila j'ai des soucis pour une macro à nouveau.
    Je vous exlique le soucis:

    J'ai 2 tableaux

    Feuil1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    PC_NOM         PC_ETAT          PC_COULEUR            PC_MARQUE
     
    E800		2		vert			HP
    E800		1
    D600		2		rouge			ASUS
    D600		1
    H900		2		noir			Apple
    H900		1
    I750		2		blanc			Sony

    Feuil2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    PC_NOM         PC_prop1        PC_propr2            PC_MARQUE
     
    E800		test1		div1			
    D600		test2		div2			
    H900		test3		div3			
    I750		Test4		div4
    Donc j'ai un meme PC_NOM dans les 2 tableaux.Je voudrais simplement recopier la marque du PC-NOM de Feuil1 au bon PC_NOM de Feuil2.

    Il faut prendre en compte aussi le PC_ETAT car seuls les PC_ETAT = 2 auront la marque.
    Donc en gros, un If PC_ETAT(feuil1) = 2 And PC_NOM(Feuil1) = PC_NOM(Feuil2)
    Then PC_MARQUE(Feuil1) = PC_MARQUE(Feuil2).
    Et aussi il faudrait créer la colonne marque de Feuil2, car elle n'existe pas a la base

    Mais c'est assez facile à dire je sais, car niveau c'est un peu galere pour moi
    Donc si vous avez au moins quelque conseils, je suis preneur.
    Je vous remercie d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    Bonjour obie78,

    Comment veux-tu faire cela ? Une seule fois sur tout le fichier une fois rempli (à l'aide d'un bouton par exemple) ? Dynamiquement à chaque remplissage de cellule de Feuille1 (ou de Feuille2) ? etc...

    En soi, ce que tu veux faire ne semble pas compliqué mais il faudrait que tu précises un peu ce que tu veux exactement.

  3. #3
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Etant donné qui tu es dans la partie VBA j'ai supposé le besoin d'une macro bien que des fonctions devraient répondre à la question.

    Voici ma proposition, j'espère avoir mis assez de commentaire dans le code.

    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
    Sub RecupMarque()
    Dim WsS As Worksheet, WsC As Worksheet
    Dim DerLigS As Long, DerligC As Long, R As Long
    Dim MaRech As Range
    Dim PCnom As String, firstaddress As String
     
    Set WsS = Sheets("Feuil1") 'Affecte la feuille source (feuil1) à la variable
    Set WsC = Sheets("Feuil2") 'Affecte la feuille source (feuil1) à la variable
     
    DerLigS = WsS.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'Affecte le n° de ligne de la dernière ligne remplie
    DerligC = WsC.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'Affecte le n° de ligne de la dernière ligne remplie
     
    For R = 2 To DerligC 'Boucle sur toutes les lignes de la feuille cible (Feuil2)
        PCnom = WsC.Cells(R, 1) 'Affecte le nom du PC
     
        With WsS.Range(WsS.Cells(1, 1), WsS.Cells(DerLigS, 1)) 'Défini la plage de recherche donc toutes les lignes remplies de la colonne A de la feuille Source (feuil1)
        Set MaRech = .Find(PCnom, LookIn:=xlValues) 'Affecte à MaRech la cellule qui répond à la recherche de PCnom
            If Not MaRech Is Nothing Then
                firstaddress = MaRech.Address 'Def de la première cellule trouvée pour éviter une boucle infinie
                Do
                    If WsS.Cells(MaRech.Row, 2) = 2 Then 'Test si PC_Etat = 2
                        WsC.Cells(R, 4) = WsS.Cells(MaRech.Row, 4) 'Si oui, on écrit la marque du PC dans la 4è colonne
                    End If 'sinon rien
                Set MaRech = .FindNext(MaRech) 'Continue la recherche
                Loop While Not MaRech Is Nothing And MaRech.Address <> firstaddress 'Arrête la boucle de recherche si adresse =
            End If
        End With
    Next R 'Passe à la ligne suivante
     
    End Sub
    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut
    J'aurai besoin de cette colonne Marque de Feuil2 pour plus tard.

    Donc en gros j'ai besoin qu'à chaque ligne de Feuil2, la colonne marque soit remplie par la bonne valeur.
    En gros j'ai ma Feuil1 et Feuil2.Lorsque je lance la macro, ca remplis la colonne marque de toute les lignes de Feuil2. Il peut y avoir des miliers de lignes.

    Edit: Salut Fvander, bah écoute c'est nickel, tres pro. Efficace et rapide. Je te remercie beaucoup.

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

Discussions similaires

  1. Recopier des données sur condition dans un autre classeur
    Par niafron71 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/09/2012, 10h25
  2. Réponses: 3
    Dernier message: 10/10/2011, 11h10
  3. [XL-2003] Reporter la valeur d'une textbox à un tableau de donné sur une autre feuille
    Par deamonRav dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 25/03/2010, 17h13
  4. Réception des données sur un autre serveur
    Par u115rcu dans le forum Langage
    Réponses: 5
    Dernier message: 20/01/2007, 14h20
  5. [VB.NET] Comment recuperer de donnée sur une autre form?
    Par weelo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 02/04/2006, 13h47

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