Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 14/03/2010, 15h49   #1
Invité régulier
 
Inscription : mars 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 84
Points : 8
Points : 8
Par défaut Comparaison de données entre plusieurs feuilles d'un classeur

Bonjour,

J'ai un classeur Excel comportant trois feuilles :
"Administration" ;
"Web" ;
"Résultats".

Chaque feuille se compose de la même manière : plusieurs colonnes (Nom, Prénom, n°, Date_Naissance et chaque ligne représente une personne différente. Les feuilles : "Administration" comporte 4000 personnes, la feuille "web" comporte 1000 personnes et la feuille Résultats ne comporte aucune personne.

Quelqu'un pourrait il me donner un système (macro, ...) me permettant de comparer les enregistrements pressent sur les feuilles "administration" et "web" et complétant la feuille "résultat" avec les personnes qui ne sont présents que sur la feuille "administration" et complétant les colonnes de la feuille "résultats" avec les infos correspondant.

SVP Merci

Raphaël
Raphael39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2010, 02h12   #2
Membre chevronné
 
Avatar de sabzzz
 
Inscription : octobre 2009
Messages : 748
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 748
Points : 771
Points : 771
bonjour Raphaël,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Macro1()
Dim plgA As Range, plgB As Range, c As Range
Dim i As Integer, x As Integer, col As Integer
 
Set plgA = Sheets("Administration").Range("A1:A" & Sheets("Administration").Range("A65536").End(xlUp).Row)
Set plgB = Sheets("web").Range("A1:A" & Sheets("web").Range("A65536").End(xlUp).Row)
col = Sheets("Administration").Range("IV1").End(xlToLeft).Column
 
For Each c In plgA
  If IsError(Application.Match(c, plgB, 0)) Then
     x = x + 1
    For i = 1 To col
     Sheets("résultat").Cells(x, i) = Sheets("Administration").Cells(c.Row, i)
    Next
  End If
Next
 
End Sub
isabelle

Dernière modification par Philippe JOCHMANS ; 16/03/2010 à 05h58. Motif: Ajout des balises codes : Sélection du code + # dans la barre d'outils de la fenêtre de rédaction des messages
sabzzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2010, 17h49   #3
Invité régulier
 
Inscription : mars 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 84
Points : 8
Points : 8
Par défaut Pb de macro

Bonjour

Merci pour cette réponse rapide mais je n'arrive pas d'une part a la mettre en œuvre (j'ai crée une macro avec les mêmes instructions que ce que tu as écrit) et d'autre par a comprendre les instructions.

Ci joint mon fichier exemple.

Pourrais tu voir ce qui "cloche" et m'expliquer les différentes instructions afin que je comprenne comment ce la fonctionne et ceci dans le but d'une adaptation possible sur d'autres projet.

SVP Merci

Raphael
Fichiers attachés
Type de fichier : zip TestMacro.zip (11,4 Ko, 7 affichages)
Raphael39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 00h47   #4
Membre chevronné
 
Avatar de sabzzz
 
Inscription : octobre 2009
Messages : 748
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 748
Points : 771
Points : 771
bonjour Raphaël,

j'ai modifié la macro puisqu'il peut y avoir des doublons en colonne A

Code :
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
Sub Macro1()
Dim plgA As Range, plgB As Range, c As Range
Dim listA(), listB()
Dim i As Integer, x As Integer, col As Integer
Dim a As String, b As String, champ As Variant, sp As Variant
 
Set plgA = Sheets("Administration").Range("A2:A" & Sheets("Administration").Range("A65536").End(xlUp).Row)
Set plgB = Sheets("web").Range("A2:A" & Sheets("web").Range("A65536").End(xlUp).Row)
col = Sheets("Administration").Range("IV1").End(xlToLeft).Column
 
For Each c In plgA
'CONCATENER chaque cellule Colonne 1 à 4 de chaqu'une des lignes des tableau A et B
' et renseigne les listA et lisB, pour éviter les doublons
    For i = 1 To col
    a = a & "," & Sheets("Administration").Cells(c.Row, i)
    b = b & "," & Sheets("web").Cells(c.Row, i)
    Next
      ReDim Preserve listA(i)
      listA(x) = Right(a, Len(a) - 1)
      a = ""
      ReDim Preserve listB(i)
      listB(x) = Right(b, Len(b) - 1)
      b = ""
      x = x + 1
Next
 
'vérifier si chaque item(champ) de listA est présente dans listB
'si non présente mets l'information sur la feuille résultat en commencant à la 
'ligne 2
 
x = 2
For Each champ In listA()
If champ = Empty Then Exit Sub
  If IsError(Application.Match(champ, listB, 0)) Then
  sp = Split(champ, ",")
    For i = 0 To col - 1
        Sheets("résultat").Cells(x, i + 1) = sp(i)
    Next
    x = x + 1
  End If
Next
 
End Sub
isabelle

Dernière modification par Philippe JOCHMANS ; 16/03/2010 à 05h59. Motif: Ajout des balises codes : Sélection du code + # dans la barre d'outils de la fenêtre de rédaction des messages
sabzzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 09h28   #5
Invité régulier
 
Inscription : mars 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 84
Points : 8
Points : 8
Par défaut Probleme macro

Bonjour,

Merci pour ta réponse toujours aussi rapide.

Mais je viens de m'apercevoir d'un petit problème :


Voici par exemple mes données :

LAGARDE Raphael Pavillons sous bois 93400
TRYON Constance Courbevoie 92400
COIFFARD Henri St Nazaire 44600
COIFFARD Henri Rennes 35700
ASA TETE Nantes 44000
VIDORE Marc St Denis 93200
VIDORE Marc Rennes 35700



Quand je lance la macro j'ai une fenêtre qui s'ouvre et qui affiche :
Erreur d'excecution "9"
l'indice n'appartient pas a la sélection


Peux tu me dire ce qui ne va pas ? SVP Merci


Je peux avoir des enregistrements avec des nom, prenom, adresse et code postal identiques (sur un ou plusieurs ictems) ce qui peut différer se peut être que l'un ou plusieurs de ces ictems (par exemple Nom, Prenom et Code postal identiques mais pas l'adresse donc c'est deux enregistrements différents)

Ci joint mon fichier exemple

Merci pour ton aide

Raphael
Fichiers attachés
Type de fichier : zip TestMacro.zip (15,1 Ko, 6 affichages)

Dernière modification par Raphael39 ; 16/03/2010 à 09h42.
Raphael39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2010, 14h57   #6
Membre chevronné
 
Avatar de sabzzz
 
Inscription : octobre 2009
Messages : 748
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 748
Points : 771
Points : 771
bonjour Raphaël,

meacoulpa,
il faut remplacer ce bout de code,

Code :
1
2
3
4
5
6
7
      ReDim Preserve listA(i)
      listA(x) = Right(a, Len(a) - 1)
      a = ""
      ReDim Preserve listB(i)
      listB(x) = Right(b, Len(b) - 1)
      b = ""
      x = x + 1
par celui-ci

Code :
1
2
3
4
5
6
7
      ReDim Preserve listA(x)
      listA(x) = Right(a, Len(a) - 1)
      a = ""
      ReDim Preserve listB(x)
      listB(x) = Right(b, Len(b) - 1)
      b = ""
      x = x + 1
isabelle
sabzzz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 09h24   #7
Invité régulier
 
Inscription : mars 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 84
Points : 8
Points : 8
Bonjour,

Merci pour ta réponse rapide.

Je viens de tester ta dernière modification et cela marche.

Merci Beaucoup

Raphaël
Raphael39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2010, 22h53   #8
Invité régulier
 
Inscription : mars 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 84
Points : 8
Points : 8
Par défaut Comparaison de données entre ... (suite)

Bonjour,

Grace à l'aide de certains membres de forum, j'ai pu realiser dans un de mes classeur une macro me permettant de comparer les informations contenues dans plusieurs feuilles du classeur.

Voici la desciption de ma macro :

J'ai un classeur Excel comportant trois feuilles :
"Administration" ;
"Web" ;
"Résultats".

Chaque feuille se compose de la même manière : plusieurs colonnes (Nom, Prénom, n°, Adresse, code postal, ville) chaque ligne représente une personne différente. Les feuilles : "Liste" comporte 4000 personnes, la feuille "Inscrits" comporte 1000 personnes et la feuille Résultats ne comporte aucune personne.

La macro réalise le travail suivant : comparer les enregistrements pressent sur les feuilles "Liste" et "Inscrits" et complétant la feuille "résultat" avec les personnes qui ne sont présents que sur la feuille "Liste" et complétant les colonnes de la feuille "résultats" avec les infos correspondant de chaque personne n'existant que dans la feuille "Liste".

Le résultat ce trouve dans le fichier joint.

Mon problème actuel est le suivant :

Je voudrais que la comparaison ne s'effectue que sur les deux premières colonnes c'est a dire :Nom et Prénom mais que si la personne n'existe que dans la feuille "Liste" l'ensemble de ses informations (Nom, Prénom, n°, Adresse, code postal, ville) soit copiées dans la feuille "résultat".

Quelqu'un aurait il une idée, une remarque, une piste ?

Svp Merci

Raphaël
Fichiers attachés
Type de fichier : zip Copie_TestMacro.zip (26,8 Ko, 15 affichages)
Raphael39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2010, 22h54   #9
Invité régulier
 
Inscription : mars 2005
Messages : 84
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 84
Points : 8
Points : 8
Par défaut Recherche d'aide

Bonjour,

Personne ne peut m'aider SVP Merci : moi je cale toujours ...

Raphael
Raphael39 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 07h00.


 
 
 
 
Partenaires

Hébergement Web