A voir également:
- Comparer 2 feuilles Excel VBA
- Liste déroulante excel - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Fusionner feuilles excel - Guide
- Si et excel - Guide
8 réponses
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
155
26 mai 2011 à 15:06
26 mai 2011 à 15:06
Bonjour,
j'aurais pu t'aider mais le problème vient du fait que les noms de tes investisseurs peuvent varier.
Je peux quand même te proposer une aide si et seulement si :
les deux premiers mots ont le même nombre de caractères pour tous les investisseurs.
Si tel n'est pas le cas, je vois pas trop comment faire.
j'aurais pu t'aider mais le problème vient du fait que les noms de tes investisseurs peuvent varier.
Je peux quand même te proposer une aide si et seulement si :
les deux premiers mots ont le même nombre de caractères pour tous les investisseurs.
Si tel n'est pas le cas, je vois pas trop comment faire.
Bonjour Mélanie,
Merci pour ta réponse !
Je te confirme que les 2 premiers mots ont le même nombre de caractères !
Allez, dis moi que tu peux m'aider ! :)
Norman
Merci pour ta réponse !
Je te confirme que les 2 premiers mots ont le même nombre de caractères !
Allez, dis moi que tu peux m'aider ! :)
Norman
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
155
26 mai 2011 à 16:18
26 mai 2011 à 16:18
Alors la oui, donne moi le nombre de caractères des deux mots.
Je te donnerais le code demain matin!!!
Je te donnerais le code demain matin!!!
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
155
26 mai 2011 à 16:19
26 mai 2011 à 16:19
De plus, tu dis :
si NAME est identique*, conserver les lignes et supprimer ou masquer les autres
dans quelles feuilles figurent-elles et faut il les masque rou les supprimer, les 2 étant faisables?
si NAME est identique*, conserver les lignes et supprimer ou masquer les autres
dans quelles feuilles figurent-elles et faut il les masque rou les supprimer, les 2 étant faisables?
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
155
26 mai 2011 à 16:25
26 mai 2011 à 16:25
Conserver quelles lignes : celles de la feuille2 ou de la feuille1?
Conserver une seule ligne correspondant à un seul investisseur?
Supprimer ou masquer les autres?
Ce point n'est pas clair.
Conserver une seule ligne correspondant à un seul investisseur?
Supprimer ou masquer les autres?
Ce point n'est pas clair.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
155
26 mai 2011 à 16:36
26 mai 2011 à 16:36
En attendant tes réponses, voici un premier code.
enregistres une copie de ton fichier et vois ce que ca donne.
Pour info, j'ai fixé à 5 caractères les 2 premiers mots, si c'est pas ca, modifies.
Un conseil appuies sur F8 sur le code pour voir ce que ca fait!!
Sub x()
'Permet de supprimer tous les doublons de la feuille 1
a = 1
Do While Sheets("Feuil1").Cells(a, 1) <> ""
valeur = Left(Sheets("Feuil1").Cells(a, 1), 5)
i = a + 1
Do While Sheets("Feuil1").Cells(i, 1) <> ""
If valeur = Left(Sheets("Feuil1").Cells(i, 1), 5) Then ' 5 représente le nombre de caractères de tes deux mots, remplaces par celui que tu souhaites
Rows(i).Select
Selection.Delete Shift:=xlUp
i = i - 1
End If
i = i + 1
Loop
a = a + 1
Loop
i = 1
Do While Sheets("Feuil2").Cells(i, 1) <> ""
a = 1
b = ""
Do While Sheets("Feuil1").Cells(a, 1) <> ""
If Left(Sheets("Feuil2").Cells(i, 1), 5) = Left(Sheets("Feuil1").Cells(a, 1), 5) Then ' 5 représente le nombre de caractères de tes deux mots, remplaces par celui que tu souhaites
Sheets("Feuil1").Cells(a, 2) = Sheets("Feuil2").Cells(i, 2)
Sheets("Feuil1").Cells(a, 3) = Sheets("Feuil2").Cells(i, 3)
b = 1
End If
a = a + 1
Loop
If b = "" Then
Sheets("Feuil1").Cells(a, 1) = Sheets("Feuil2").Cells(i, 1)
Sheets("Feuil1").Cells(a, 2) = Sheets("Feuil2").Cells(i, 2)
Sheets("Feuil1").Cells(a, 3) = Sheets("Feuil2").Cells(i, 3)
End If
i = i + 1
Loop
End Sub
enregistres une copie de ton fichier et vois ce que ca donne.
Pour info, j'ai fixé à 5 caractères les 2 premiers mots, si c'est pas ca, modifies.
Un conseil appuies sur F8 sur le code pour voir ce que ca fait!!
Sub x()
'Permet de supprimer tous les doublons de la feuille 1
a = 1
Do While Sheets("Feuil1").Cells(a, 1) <> ""
valeur = Left(Sheets("Feuil1").Cells(a, 1), 5)
i = a + 1
Do While Sheets("Feuil1").Cells(i, 1) <> ""
If valeur = Left(Sheets("Feuil1").Cells(i, 1), 5) Then ' 5 représente le nombre de caractères de tes deux mots, remplaces par celui que tu souhaites
Rows(i).Select
Selection.Delete Shift:=xlUp
i = i - 1
End If
i = i + 1
Loop
a = a + 1
Loop
i = 1
Do While Sheets("Feuil2").Cells(i, 1) <> ""
a = 1
b = ""
Do While Sheets("Feuil1").Cells(a, 1) <> ""
If Left(Sheets("Feuil2").Cells(i, 1), 5) = Left(Sheets("Feuil1").Cells(a, 1), 5) Then ' 5 représente le nombre de caractères de tes deux mots, remplaces par celui que tu souhaites
Sheets("Feuil1").Cells(a, 2) = Sheets("Feuil2").Cells(i, 2)
Sheets("Feuil1").Cells(a, 3) = Sheets("Feuil2").Cells(i, 3)
b = 1
End If
a = a + 1
Loop
If b = "" Then
Sheets("Feuil1").Cells(a, 1) = Sheets("Feuil2").Cells(i, 1)
Sheets("Feuil1").Cells(a, 2) = Sheets("Feuil2").Cells(i, 2)
Sheets("Feuil1").Cells(a, 3) = Sheets("Feuil2").Cells(i, 3)
End If
i = i + 1
Loop
End Sub
Merci beaucoup pour ton aide Mélanie !
Je vais essayer d'être plus clair, purée c'est pas simple de mettre à l'écrit un problème sur Excel. Si je n'y arrive toujours pas, je pourrais toujours t'envoyer le fichier, ça sera peut-être plus simple.
Bon allez, j'essaie quand même :)
J'ai 2 feuilles, FEUILLE1 et FEUILLE2 qui contiennent chacune une liste d'investisseurs dans une colonne qui s'appelle NAME. Ces feuilles contiennent également 2 autres colonnes qui s'appellent SHARES et DATE.
FEUILLE1 est ma trame et ne contient pas de données dans les colonnes SHARES et DATE, uniquement la liste complète des investisseurs. J'utilise FEUILLE1 car elle contient d'autres colonnes qui me servent pour autre chose.
FEUILLE2 contient les données qui m'intéressent et n'a que 3 colonnes : les investisseurs concernés dans NAME, le nombre d'actions dans SHARES et une date dans DATE. Je reçois ce document au début de chaque projet
Pour faire simple, je souhaite intégrer les lignes de FEUILLE2 dans FEUILLE1.
J'aimerais que ma macro compare les caractères de la colonne NAME des 2 feuilles et masque ou supprime les lignes dans FEUILLE1 qui ne sont pas dans FEUILLE2. Ces investisseurs ne participe pas au projet et ne doivent pas apparaître dans ma feuille.
Si les X premiers caractères d'une cellule sont similaires, je souhaite copier coller les données des colonnes SHARES et DATE de FEUILLE2 vers FEUILLE1.
Il peut également arriver que de nouveaux investisseurs viennent s'ajouter à la liste. Dans notre programme cela signifie qu'une chaîne de X caractères dans FEUILLE2 n'existe pas dans FEUILLE1. Dans ce cas je souhaite copier les 3 cellules NAME, SHARES et DATE de FEUILLE2 vers FEUILLE1.
Voici quelques exemples de ce qu'il peut y avoir dans la colonne NAME :
MERRILL LYNCH & CO
MERRILL LYNCH ASSET MGT
MERRILL LYNCH INVEST CDN
MERRILL LYNCH INVESTMENT MANAGEMENT (NJ)
MERRILL LYNCH INVESTMENT MANAGERS (UK) LTD.
5 caractères serait donc trop juste, j'ai fait le tour de la liste et 20 caractères fonctionne. J'espère que les espaces ne posent pas de problème.
Voila, j'espère avoir répondu à tes questions, n'hésite pas si tu as le moindre doute.
Et merci encore!
Norman
Je vais essayer d'être plus clair, purée c'est pas simple de mettre à l'écrit un problème sur Excel. Si je n'y arrive toujours pas, je pourrais toujours t'envoyer le fichier, ça sera peut-être plus simple.
Bon allez, j'essaie quand même :)
J'ai 2 feuilles, FEUILLE1 et FEUILLE2 qui contiennent chacune une liste d'investisseurs dans une colonne qui s'appelle NAME. Ces feuilles contiennent également 2 autres colonnes qui s'appellent SHARES et DATE.
FEUILLE1 est ma trame et ne contient pas de données dans les colonnes SHARES et DATE, uniquement la liste complète des investisseurs. J'utilise FEUILLE1 car elle contient d'autres colonnes qui me servent pour autre chose.
FEUILLE2 contient les données qui m'intéressent et n'a que 3 colonnes : les investisseurs concernés dans NAME, le nombre d'actions dans SHARES et une date dans DATE. Je reçois ce document au début de chaque projet
Pour faire simple, je souhaite intégrer les lignes de FEUILLE2 dans FEUILLE1.
J'aimerais que ma macro compare les caractères de la colonne NAME des 2 feuilles et masque ou supprime les lignes dans FEUILLE1 qui ne sont pas dans FEUILLE2. Ces investisseurs ne participe pas au projet et ne doivent pas apparaître dans ma feuille.
Si les X premiers caractères d'une cellule sont similaires, je souhaite copier coller les données des colonnes SHARES et DATE de FEUILLE2 vers FEUILLE1.
Il peut également arriver que de nouveaux investisseurs viennent s'ajouter à la liste. Dans notre programme cela signifie qu'une chaîne de X caractères dans FEUILLE2 n'existe pas dans FEUILLE1. Dans ce cas je souhaite copier les 3 cellules NAME, SHARES et DATE de FEUILLE2 vers FEUILLE1.
Voici quelques exemples de ce qu'il peut y avoir dans la colonne NAME :
MERRILL LYNCH & CO
MERRILL LYNCH ASSET MGT
MERRILL LYNCH INVEST CDN
MERRILL LYNCH INVESTMENT MANAGEMENT (NJ)
MERRILL LYNCH INVESTMENT MANAGERS (UK) LTD.
5 caractères serait donc trop juste, j'ai fait le tour de la liste et 20 caractères fonctionne. J'espère que les espaces ne posent pas de problème.
Voila, j'espère avoir répondu à tes questions, n'hésite pas si tu as le moindre doute.
Et merci encore!
Norman
melanie1324
Messages postés
1504
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
155
27 mai 2011 à 08:26
27 mai 2011 à 08:26
essaie avec ca :
Sub x()
'permet de renseigner les colonnes de tes investisseurs
i = 1
Do While Sheets("Feuil2").Cells(i, 1) <> ""
a = 1
b = ""
Do While Sheets("Feuil1").Cells(a, 1) <> ""
If Left(Sheets("Feuil2").Cells(i, 1), 20) = Left(Sheets("Feuil1").Cells(a, 1), 5) Then ' 5 représente le nombre de caractères de tes deux mots, remplaces par celui que tu souhaites
Sheets("Feuil1").Cells(a, 2) = Sheets("Feuil2").Cells(i, 2)
Sheets("Feuil1").Cells(a, 3) = Sheets("Feuil2").Cells(i, 3)
Sheets("Feuil1").Cells(a, 58) = "X"
b = 1
End If
a = a + 1
Loop
If b = "" Then
Sheets("Feuil1").Cells(a, 1) = Sheets("Feuil2").Cells(i, 1)
Sheets("Feuil1").Cells(a, 2) = Sheets("Feuil2").Cells(i, 2)
Sheets("Feuil1").Cells(a, 3) = Sheets("Feuil2").Cells(i, 3)
Sheets("Feuil1").Cells(a, 58) = "X"
End If
i = i + 1
Loop
'Permet de supprimer les investisseurs qui ne figurent pas dans feuil2 :
i = 1
Do While Sheets("Feuil1").Cells(i, 1) <> ""
If Sheets("Feuil1").Cells(i, 58) <> "X" Then
Sheets("Feuil1").Select
Rows(i).Select
Selection.Delete Shift:=xlUp
Else
Sheets("Feuil1").Cells(i, 58) = ""
End If
i = i + 1
Loop
End Sub
Sub x()
'permet de renseigner les colonnes de tes investisseurs
i = 1
Do While Sheets("Feuil2").Cells(i, 1) <> ""
a = 1
b = ""
Do While Sheets("Feuil1").Cells(a, 1) <> ""
If Left(Sheets("Feuil2").Cells(i, 1), 20) = Left(Sheets("Feuil1").Cells(a, 1), 5) Then ' 5 représente le nombre de caractères de tes deux mots, remplaces par celui que tu souhaites
Sheets("Feuil1").Cells(a, 2) = Sheets("Feuil2").Cells(i, 2)
Sheets("Feuil1").Cells(a, 3) = Sheets("Feuil2").Cells(i, 3)
Sheets("Feuil1").Cells(a, 58) = "X"
b = 1
End If
a = a + 1
Loop
If b = "" Then
Sheets("Feuil1").Cells(a, 1) = Sheets("Feuil2").Cells(i, 1)
Sheets("Feuil1").Cells(a, 2) = Sheets("Feuil2").Cells(i, 2)
Sheets("Feuil1").Cells(a, 3) = Sheets("Feuil2").Cells(i, 3)
Sheets("Feuil1").Cells(a, 58) = "X"
End If
i = i + 1
Loop
'Permet de supprimer les investisseurs qui ne figurent pas dans feuil2 :
i = 1
Do While Sheets("Feuil1").Cells(i, 1) <> ""
If Sheets("Feuil1").Cells(i, 58) <> "X" Then
Sheets("Feuil1").Select
Rows(i).Select
Selection.Delete Shift:=xlUp
Else
Sheets("Feuil1").Cells(i, 58) = ""
End If
i = i + 1
Loop
End Sub
Bonjour Mélanie,
Merci beaucoup pour ton code ! Ça marche ! :)
La copie fonctionne bien, par contre je dois lancer la macro 5 ou 6 fois pour que tous les doublons soient supprimés. Peut-être un problème dans la boucle?
2 nouvelles questions :
- Est-il possible de masquer les lignes plutôt que de les supprimer?
- Dans le cas où des nouveaux investisseurs sont dans la FEUILLE2 et pas dans la FEUILLE1 (dans notre programme cela signifie qu'une chaîne de X caractères dans FEUILLE2 n'existe pas dans FEUILLE1), je souhaiterais insérer une ligne et copier les 3 cellules NAME, SHARES et DATE de FEUILLE2 vers FEUILLE1.
Tiens moi au courant quand tu as un moment pour regarder ça !
Et merci encore
Merci beaucoup pour ton code ! Ça marche ! :)
La copie fonctionne bien, par contre je dois lancer la macro 5 ou 6 fois pour que tous les doublons soient supprimés. Peut-être un problème dans la boucle?
2 nouvelles questions :
- Est-il possible de masquer les lignes plutôt que de les supprimer?
- Dans le cas où des nouveaux investisseurs sont dans la FEUILLE2 et pas dans la FEUILLE1 (dans notre programme cela signifie qu'une chaîne de X caractères dans FEUILLE2 n'existe pas dans FEUILLE1), je souhaiterais insérer une ligne et copier les 3 cellules NAME, SHARES et DATE de FEUILLE2 vers FEUILLE1.
Tiens moi au courant quand tu as un moment pour regarder ça !
Et merci encore