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 :

comparer deux colonnes de deux feuilles differentes et coller le resultat sur une troixieme feuille


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    gestionnaire de projets informatiques
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : gestionnaire de projets informatiques

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut comparer deux colonnes de deux feuilles differentes et coller le resultat sur une troixieme feuille
    bonjour a tous et bon début de semaine

    je suis débutante en VBA plus précisément avec les macros et j'ai besoin de votre aide svp
    en effet le problème est le suivant: j'ai deux feuille de calcul situé dans un même classeur
    la première feuille contient l'extraction d''une base de données et la deuxième feuille l'annuaire téléphonique qui est a jour
    je voudrais donc me servir de la deuxième pour mettre a jour la première. A u cas ou:
    -l'utilisateur et le lieu de l'annuaire correspond a celui de l'extraction, alors afficher le résultat dans une troisième feuille(utilisateur, lieu et tous les équipements qui sont en ce nom)
    -l'utilisateur correspond et le lieu ne correspond pas alors retrouver le lieu correspondant et afficher le résultat dans la troisième feuille(utilisateur, lieu et équipements qui sont en ce nom)
    -l'utilisateur ne correspond pas alors colorié en rouge la ligne correspondante
    NB j'aimerai le réaliser avec les macros
    voici un exemple de fichier joint
    je vous remercie d'avance pour votre aide en espérant me faire comprendre
    test de rapport.xlsx

  2. #2
    Membre actif Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 171
    Points : 276
    Points
    276
    Par défaut
    Bonjour,

    Voila un petit code, je pense que les commentaires parle d'eux même.
    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
    Sub Macro1()
    Dim ShtExtraction As Worksheet
    Dim ShtAnnuaire As Worksheet
    Dim ShtResultat As Worksheet
    Dim utilisateur() As String
    Dim i As Long
    Dim DernièreLigne As Long
    Dim UtilisateurTrouver As Boolean
     
    'on determine les differente feuille --> c'est plus lisible
        Set ShtExtraction = ThisWorkbook.Sheets("Feuil1")
        Set ShtAnnuaire = ThisWorkbook.Sheets("Feuil2")
        Set ShtResultat = ThisWorkbook.Sheets("Feuil3")
     
    'Stockage des utilisateurs et du lieu de la deuxième feuille l'annuaire téléphonique dans une variable tableau
    'Utilisateur(1,x)= utilisateur
    'Utilisateur(2,x)= lieu
    'Je part du principe qu'un utilisateur n'est qu'a un endroit à la fois
    'Je part du principe qu'il n'y a pas de ligne vide
        i = 1
        ReDim utilisateur(1 To 2, 1 To 1)
        Do While ShtAnnuaire.Range("A" & i).Value <> ""
            ReDim Preserve utilisateur(1 To 2, 1 To i)
            utilisateur(1, i) = ShtAnnuaire.Range("A" & i).Value
            utilisateur(2, i) = ShtAnnuaire.Range("B" & i).Value
            i = i + 1
        Loop
     
    'Gestion des conditions
        i = 384 'Dans ton fichier transmit tu commence à la ligne 384
        'Je part du principe qu'il n'y a pas de ligne vide
        Do While ShtExtraction.Range("A" & i).Value <> ""
            UtilisateurTrouver = False
            For j = 1 To UBound(utilisateur, 2)
                'l'utilisateur correspond a celui de l'extraction
                ' je ne gère pas le lieu dans les conditions,
                ' il est automatiquement bien renseigné dans la 3eme feuille
                If UCase(ShtExtraction.Range("A" & i).Value) = UCase(utilisateur(1, j)) Then ' UCase converti en majuscule
                    DernièreLigne = ShtResultat.Range("A65536").End(xlUp).Row + 1
                    ShtResultat.Range("A" & DernièreLigne).Value = utilisateur(1, j) 'utilisateur
                    ShtResultat.Range("B" & DernièreLigne).Value = utilisateur(2, j) ' lieu
                    ShtResultat.Range("C" & DernièreLigne).Value = ShtExtraction.Range("C" & i).Value 'désignation
                    ShtResultat.Range("D" & DernièreLigne).Value = ShtExtraction.Range("D" & i).Value 'type
                    UtilisateurTrouver = True
                End If
            Next j
            'l'utilisateur ne correspond pas alors colorié en rouge la ligne correspondante (je pense que tu parles de la première feuille)
            If UtilisateurTrouver = False Then
                ShtExtraction.Range("A" & i & ":D" & i).Interior.Color = 255
            End If
            i = i + 1
        Loop
     
    End Sub
    a+

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    gestionnaire de projets informatiques
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : gestionnaire de projets informatiques

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut merci
    lucas je te remercie pour le temps que tu as pu consacrer pour ce code,je vais tout le suite le manipuler et voir ce qu'il en est
    encore une fois de plus merci
    bonne journee

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut




    Bonjour, bonjour !

    lucasgaetan, tes lignes n°11 à 13 sont caduques - et imagine si les feuilles sont renommées - car
    un objet pointant sur chaque feuille est de facto déjà défini au sein du projet : son CodeName !


  5. #5
    Membre actif Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 171
    Points : 276
    Points
    276
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    lucasgaetan, tes lignes n°11 à 13 sont caduques
    ok , mais je ne vais lui remplir son fichier non plus !

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    gestionnaire de projets informatiques
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : gestionnaire de projets informatiques

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    ca veut dire quoi caduque svp

    lucasgaetan bonsoir

    stp j'aimerai comprendre le mot"caduque " ,et effectivement a partir du lieu ou on détermine les différents feuilles ca ne fonctionne pas, le message suivant s'affiche "l'indice n'appartient pas a la sélection"
    stp qu'est ce qui ne vas pas?,que dois je faire?
    je suis désole du dérangement
    merci

    j'ai refaire les feuilles en commençant la feuille1 par 2 et non plus par 384 et j'ai modifié les données dans le code
    stp

    voici le fichier modifié,j'essaye de lire le code mais comme je suis debutante ca ne passe pas tres rapidement,ca prend un peu de temps mais en meme temps il ya aussi des lignes que j'aimerai mieux comprendre comme la ligne 21.23;39 et 44
    une fois de plus merci et bonne nuit ou bonne journéétest de rapport.xlsx

  7. #7
    Membre actif Avatar de lucasgaetan
    Homme Profil pro
    dessinateur BE
    Inscrit en
    Août 2011
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : dessinateur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 171
    Points : 276
    Points
    276
    Par défaut
    Bonjour Diane,

    Quand Marc dit que les lignes n°11 à 13 sont caduques, il veux dire que ce n'est pas la bonne méthode employée:
    -La méthode que j'emploie provient de l'enregistreur de macro; elle détermine les feuilles (Worksheet) en fonction du nom écrit dans l'onglet de sélection (Sheets("Feuil1"))
    -La méthode de Marc (il a raison mais c'est moins parlant pour les débutant) utilise le CodeName de la feuille, c'est une variable de l'environnement VBA qui fait référence à ta feuille

    Pour les ligne 21 et 23 (ReDim et ReDim Preserve) permettent de redimensionner une variable tableau voir tuto ici

    La ligne 39 recherche la dernière ligne non vide + 1 ligne -->pour écrire en bas de ta feuille "résultat"

    pour la ligne 44, je te laisse réfléchir (regarde les lignes 33 38 et 48)

    regarde le fichier joint
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Comparer les valeurs de deux colonnes d'une feuille excel
    Par charrynsasi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/12/2012, 14h40
  2. [XL-2003] Comparer deux feuilles et copier les valeurs équivalentes sur une troisième
    Par Julzz dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/08/2011, 14h02
  3. [XL-2007] Comparer deux fichiers grace à deux colonnes identiques
    Par Paloma dans le forum Excel
    Réponses: 3
    Dernier message: 12/11/2009, 08h30
  4. Copier - coller ligne entière sur une autre feuille
    Par s.echeff dans le forum Excel
    Réponses: 1
    Dernier message: 10/04/2009, 17h35
  5. [DeskI XiR2] Comparer les valeurs de deux colonnes
    Par EmmanuelleC dans le forum Débuter
    Réponses: 2
    Dernier message: 27/02/2009, 08h45

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