OVH Cloud OVH Cloud

macro de michdenis: probleme?

33 réponses
Avatar
rick
Bonjour,

La macro de michdenis, me permet de detecter des doublons, quand j'importe
des données sur feuille, la macro se lance et permet de verifier les
différents doublons suivant la combinaisons de 5 colonnes.

le probleme est que je souhaite, si un doublon est détecté lors de l'import
écraser la ligne déja existante quand je repond oui au message(desirez vous
ecraser la ligne?).

J'ai essayé de faire une modif, mais le probleme par exemple, quand sur ma
ligne 15 j'ai une ligne , et quand je vient faire l'import de la meme ligne
j'ai la macro qui se lance , je choisit oui dans mon message: désirez vous
écraser la ligne.
La ligne est effacé mais pas écrasé à la meme ligne, c'est a dire que je me
retrouve avec la ligne 15 à vide et la ligne 16 avec les bonnes données.

Savez vous comment faire pour écraser cette ligne 15, si le doublon est
détecté.
c'est a dire avoir les nouvelle données sur la ligne 15.(ecraser l'ancienne
donnée)

ci-joint l'aperçu de la macro:
Sub doublons()
Dim K As Integer, A As Integer
Dim rg As Range, P As Integer
Dim NomFeuille As String

NomFeuille = "Feuil1" 'à déterminer

Application.EnableEvents = False
'Concatenation des colonnes D, E, H, I, P dans la colonne IV
With Worksheets(NomFeuille)
Set rg = .Range("IV15:IV400")
rg.FormulaLocal = _
"=" & UCase(.Range("$D15").Address(0, 0)) & _
"&" & UCase(.Range("$E15").Address(0, 0)) & "&" _
& UCase(.Range("$H15").Address(0, 0)) _
& "&" & UCase(.Range("$I15").Address(0, 0)) & _
"&" & UCase(.Range("$P15").Address(0, 0))
'substitution des formules pour leurs valeurs, dans la colonne HK:HK
rg.Value = rg.Value
'dans la colonne IU,place la formule suivante
'qui identifie le numero de lignes.ceci dans le but de remettre le
tableau àla
'fin dans le meme ordre de tri,en se basant sur cette colonne
rg.Offset(, -1).Formula = "=row()"
'Transforme la formule de la colonne en sa valeur
rg.Offset(, -1).Value = rg.Offset(, -1).Value
'premier tri de la colonne IU pour regrouper les doublons les un avec
les autres
rg.Offset(, -255).Resize(, 256).Sort Key1:=rg(2, 1)
End With
'Boucle qui teste chacune des cellules de la colonnes IU
'selon le choix de l'utilisateur, affecter une lettre au doublon ou
supprimer ces doublons

Do While rg(K + 1, 1).Row < rg.Row + rg.Rows.Count
A = WorksheetFunction.CountIf(rg, rg(K + 1, 1))
If A > 1 Then
'si a>1, il ya doublons

'cette ligne permet de sélectionner la plage ou sont les doublons pour
permettre à l'utilisateur
'de les visionner
Application.GoTo Range("A" & rg(K + 1, 1).Offset(-2).Row), True
rg(K + 1, 1).Resize(A).EntireRow.Select
'le message d'alerte
If MsgBox("il y a des " & A - 1 & " doublon(s) dans la ligne" _
& rg(K + 1).Row & "." & vbCrLf & vbCrLf & _
"désirez vous écraser cette ligne ? ", _
vbCritical + vbYesNo, "Doublons") = vbYes Then

rg(K + 1).EntireRow.ClearContents

Merci d'avance

3 réponses

1 2 3 4
Avatar
Clément Marcotte
Ce n'est mauditement pas une question de QI, mais une question
d'attitude. Attitude d'accepter d'apprendre, attitude de mettre le
temps qu'il faut pour apprendre, attitude de ne pas exaspérer le
lecteur en lui posant 100 fois la même maudite question.

Attitude de ne rien faire pour accéder aux demandes maintes fois
répétées:

Faire l'effort d'utiliser un lecteur de news au lieu de la tabarouette
d'emmerdante interface Web
Faire l'effort d'adapter les solutions déjà obtenues maintes et
maintes fois aux nouveaux problèmes
Faire l'effort de définir convenablement la question avant de la
poser
Faire l'effort de poser la question assez complètement pour ne pas
avoir à tout refaire aux 10 minutes.
Faire l'effort de ne pas changer les règles du jeu d'une question à
l'autre.
Faire l'effort de toujours rester dans le même fil de discussion pour
le même problème.
Faire l'effort d'apprendre.
Faire l'effort de visiter les sites et de lire les questions et
réponses précédentes pour ne pas répéter la question qui a eu une
réponse 10 minutes avant.

Quand tu auras fait un examen honnête de ta situation et de ton passé
ici, là tu pourras réaliser que chez toi, le problème est entre ta
chaise et ton écran, ou comme d'autres disent aussi, à 30 centimètres
de ton écran.

--
On apprend pas à un vieux singe à faire des grimaces
"rick" a écrit dans le message de
news:
continue a m'insulter, je prie dieu pour QUE TU RENCONTRE TOUT LES
MALHEURS

SI TU CONTINUE 0 M4INSULTER;

ON NE PEUT PAS AVOIR LE MEME qi QUE TOI,alors respecte ceux qui ont
un qi

faible.

merci


ARRANGE TOI TOUT SEUL ET VA-T-EN AU DIABLE MAUDIT PARASITE.

--
On apprend pas à un vieux singe à faire des grimaces
"rick" a écrit dans le message de
news:
Bonjour,

La macro de michdenis, me permet de detecter des doublons, quand
j'importe

des données sur feuille, la macro se lance et permet de verifier
les



différents doublons suivant la combinaisons de 5 colonnes.

le probleme est que je souhaite, si un doublon est détecté lors
de



l'import
écraser la ligne déja existante quand je repond oui au
message(desirez vous

ecraser la ligne?).

J'ai essayé de faire une modif, mais le probleme par exemple,
quand



sur ma
ligne 15 j'ai une ligne , et quand je vient faire l'import de la
meme ligne

j'ai la macro qui se lance , je choisit oui dans mon message:
désirez vous

écraser la ligne.
La ligne est effacé mais pas écrasé à la meme ligne, c'est a
dire



que je me
retrouve avec la ligne 15 à vide et la ligne 16 avec les bonnes
données.


Savez vous comment faire pour écraser cette ligne 15, si le
doublon



est
détecté.
c'est a dire avoir les nouvelle données sur la ligne 15.(ecraser
l'ancienne

donnée)

ci-joint l'aperçu de la macro:
Sub doublons()
Dim K As Integer, A As Integer
Dim rg As Range, P As Integer
Dim NomFeuille As String

NomFeuille = "Feuil1" 'à déterminer

Application.EnableEvents = False
'Concatenation des colonnes D, E, H, I, P dans la colonne IV
With Worksheets(NomFeuille)
Set rg = .Range("IV15:IV400")
rg.FormulaLocal = _
"=" & UCase(.Range("$D15").Address(0, 0)) & _
"&" & UCase(.Range("$E15").Address(0, 0)) & "&" _
& UCase(.Range("$H15").Address(0, 0)) _
& "&" & UCase(.Range("$I15").Address(0, 0)) & _
"&" & UCase(.Range("$P15").Address(0, 0))
'substitution des formules pour leurs valeurs, dans la
colonne



HK:HK
rg.Value = rg.Value
'dans la colonne IU,place la formule suivante
'qui identifie le numero de lignes.ceci dans le but de
remettre



le
tableau àla
'fin dans le meme ordre de tri,en se basant sur cette
colonne



rg.Offset(, -1).Formula = "=row()"
'Transforme la formule de la colonne en sa valeur
rg.Offset(, -1).Value = rg.Offset(, -1).Value
'premier tri de la colonne IU pour regrouper les doublons
les un



avec
les autres
rg.Offset(, -255).Resize(, 256).Sort Key1:=rg(2, 1)
End With
'Boucle qui teste chacune des cellules de la colonnes IU
'selon le choix de l'utilisateur, affecter une lettre au doublon
ou



supprimer ces doublons

Do While rg(K + 1, 1).Row < rg.Row + rg.Rows.Count
A = WorksheetFunction.CountIf(rg, rg(K + 1, 1))
If A > 1 Then
'si a>1, il ya doublons

'cette ligne permet de sélectionner la plage ou sont les
doublons pour

permettre à l'utilisateur
'de les visionner
Application.GoTo Range("A" & rg(K + 1, 1).Offset(-2).Row),
True



rg(K + 1, 1).Resize(A).EntireRow.Select
'le message d'alerte
If MsgBox("il y a des " & A - 1 & " doublon(s) dans la
ligne" _

& rg(K + 1).Row & "." & vbCrLf & vbCrLf & _
"désirez vous écraser cette ligne ? ", _
vbCritical + vbYesNo, "Doublons") = vbYes Then

rg(K + 1).EntireRow.ClearContents

Merci d'avance








Avatar
Misange
Sur un forum il y a plusieurs intervenants. Chacun réagit à sa façon. Je
n'approuve pas les insultes et je l'ai déjà dit. Mais je n'apprécie
guère que tu me dises à moi que je t'insulte.

Tu ne réponds comme d'habitude qu'à ce qui t'arrange.

Cette absence totale d'échange, quoi que tu en dises, ne fait que
confirmer l'inutilité de te répondre, sur excel ou sur tout autre sujet.

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 05/05/2005 20:31, :
ARRANGE TOI TOUT SEUL ET VA-T-EN AU DIABLE MAUDIT PARASITE.
comment appelle tu ca.
Moi j'appelle ceci une insulte, et je vait dire un truc plus on m'insulte et
je parle surtout pour clement, plus franchement le dieu le punira de toute
les insulte qui peut sortir, ce que j'espère tres fortement.
Attention,a ton destin,plus tu m'insulte plus tu ne rencontrera que du
malheur autour de toi





oups des trucs bizarres dans les copier coller !

d'autant plus curieux que le message enregistré chez moi était correct.
Il faut donc lire dans les deux paragraphes illisbles :

Sur excelabo, on t'a au moins dit 20 fois d'aller lire la page connexion
et de faire en sorte de lire le forum avec outlook express. Que tu ne
puisse pas le faire du boulot passe encore mais de chez toi tu pourrais.
Que ce ne soit pas confortable pour toi de lire le forum sur le web, on
s'en moquerait éperdument si ça ne t'incitait pas à reposter 20 fois les
mêmes questions.


et de frederic sigonneau, et j'essaie toujours de comprend re

leur macro, car je demande souvent des commentaires, pour pouvoir les
adapter à mes autres macro, et je leur dit toujours merci,



Et prendre les gens pour des idiots c'est leur dire merci ? Changer de
pseudo tous les 15 jours et dire que tu n'as jamais entendu parler de
Testou ou de Phil c'est respecter les intervenants du forum ? Traire la
vache pour en tirer tout le lait, ça tu sais faire. S'il faut dire merci
pour qu'elle t'en donne encore un litre, tu le fais mais ta
reconnaissance des autres s'arrête là.






Avatar
Clément Marcotte
Et puis, dis toi bien une chose : si cela avait été une question de
QI, je n'aurais pas 10 ans d'implication bénévole dans des
organisations de personnes handicapées derrière moi.



--
On apprend pas à un vieux singe à faire des grimaces
"rick" a écrit dans le message de
news:
continue a m'insulter, je prie dieu pour QUE TU RENCONTRE TOUT LES
MALHEURS

SI TU CONTINUE 0 M4INSULTER;

ON NE PEUT PAS AVOIR LE MEME qi QUE TOI,alors respecte ceux qui ont
un qi

faible.

merci


ARRANGE TOI TOUT SEUL ET VA-T-EN AU DIABLE MAUDIT PARASITE.

--
On apprend pas à un vieux singe à faire des grimaces
"rick" a écrit dans le message de
news:
Bonjour,

La macro de michdenis, me permet de detecter des doublons, quand
j'importe

des données sur feuille, la macro se lance et permet de verifier
les



différents doublons suivant la combinaisons de 5 colonnes.

le probleme est que je souhaite, si un doublon est détecté lors
de



l'import
écraser la ligne déja existante quand je repond oui au
message(desirez vous

ecraser la ligne?).

J'ai essayé de faire une modif, mais le probleme par exemple,
quand



sur ma
ligne 15 j'ai une ligne , et quand je vient faire l'import de la
meme ligne

j'ai la macro qui se lance , je choisit oui dans mon message:
désirez vous

écraser la ligne.
La ligne est effacé mais pas écrasé à la meme ligne, c'est a
dire



que je me
retrouve avec la ligne 15 à vide et la ligne 16 avec les bonnes
données.


Savez vous comment faire pour écraser cette ligne 15, si le
doublon



est
détecté.
c'est a dire avoir les nouvelle données sur la ligne 15.(ecraser
l'ancienne

donnée)

ci-joint l'aperçu de la macro:
Sub doublons()
Dim K As Integer, A As Integer
Dim rg As Range, P As Integer
Dim NomFeuille As String

NomFeuille = "Feuil1" 'à déterminer

Application.EnableEvents = False
'Concatenation des colonnes D, E, H, I, P dans la colonne IV
With Worksheets(NomFeuille)
Set rg = .Range("IV15:IV400")
rg.FormulaLocal = _
"=" & UCase(.Range("$D15").Address(0, 0)) & _
"&" & UCase(.Range("$E15").Address(0, 0)) & "&" _
& UCase(.Range("$H15").Address(0, 0)) _
& "&" & UCase(.Range("$I15").Address(0, 0)) & _
"&" & UCase(.Range("$P15").Address(0, 0))
'substitution des formules pour leurs valeurs, dans la
colonne



HK:HK
rg.Value = rg.Value
'dans la colonne IU,place la formule suivante
'qui identifie le numero de lignes.ceci dans le but de
remettre



le
tableau àla
'fin dans le meme ordre de tri,en se basant sur cette
colonne



rg.Offset(, -1).Formula = "=row()"
'Transforme la formule de la colonne en sa valeur
rg.Offset(, -1).Value = rg.Offset(, -1).Value
'premier tri de la colonne IU pour regrouper les doublons
les un



avec
les autres
rg.Offset(, -255).Resize(, 256).Sort Key1:=rg(2, 1)
End With
'Boucle qui teste chacune des cellules de la colonnes IU
'selon le choix de l'utilisateur, affecter une lettre au doublon
ou



supprimer ces doublons

Do While rg(K + 1, 1).Row < rg.Row + rg.Rows.Count
A = WorksheetFunction.CountIf(rg, rg(K + 1, 1))
If A > 1 Then
'si a>1, il ya doublons

'cette ligne permet de sélectionner la plage ou sont les
doublons pour

permettre à l'utilisateur
'de les visionner
Application.GoTo Range("A" & rg(K + 1, 1).Offset(-2).Row),
True



rg(K + 1, 1).Resize(A).EntireRow.Select
'le message d'alerte
If MsgBox("il y a des " & A - 1 & " doublon(s) dans la
ligne" _

& rg(K + 1).Row & "." & vbCrLf & vbCrLf & _
"désirez vous écraser cette ligne ? ", _
vbCritical + vbYesNo, "Doublons") = vbYes Then

rg(K + 1).EntireRow.ClearContents

Merci d'avance








1 2 3 4