Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

doublon sur 2 feuilles

  • Initiateur de la discussion Initiateur de la discussion yohinomura
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Y

yohinomura

Guest
Bonjour le forum,
je souhaite mettre a jours une feuille (PrevNL) par rapport a une autre (NL)
mon controle se fait sur la colonne C
j'ai modifié une formule qui marche très bien pour une seule feuille mais pas dans mon cas

formule d'origine:
Doublon = Range("C1000").End(xlUp).Value
If Application.CountIf(Range("C2:C" & Range("C1000").End(xlUp).Row), Doublon) > 1 Then
Range("C1000").End(xlUp).EntireRow.Delete
End If

formule modifiée:
Doublon = Range("NL!C1000").End(xlUp).Value
If Not Application.CountIf(Range("PrevNL!C2:C" & Range("PrevNL!C1000").End(xlUp).Row), Doublon) > 1 Then
Range("PrevNL!C1000").End(xlUp).EntireRow.Delete
End If

tout ce que j'arrive a faire, c'est supprimer la dernière ligne de la feuille PrevNL

dans un premier temps, je veux supprimer la ligne complete de la feuille PrevNL si je ne retrouve pas le numero correspondant de la colonne C dans la feuille NL

😕😕😕

je ne comprend de moins en moins, fait trop chaud.

Merci à vous
 

Pièces jointes

Re : doublon sur 2 feuilles

Bonjour yohinomura
Je ne suis pas certain d'avoir compris, donc je pose la question :
Dans votre classeur d'exemples, s'agit-il bien de supprimer la ligne 11 de la feuille PrevNL et de conserver toutes les autres ?
ROGER2327
#3879


Mardi 24 Gidouille 137 (Saint Gris-gris, ventre, SQ)
20 Messidor An CCXVIII
2010-W27-4T13:58:40Z
 
Re : doublon sur 2 feuilles

Bonjour Yohinomura, bonjour Roger, le forum,

Vu la valeur d'un n° de commande, cela dépasse la capacité d'un simple integer, il faut mettre
Code:
Dim Doublon As Long

De plus, tu as ajouté un "Not", donc ta ligne est supprimée lorsque tu n'as pas de doublon.

Le .end(xlup) s'arrête à la ligne 417 qui est la dernière ligne du tableau défini au lieu de la ligne 20 (mais je ne sais pas pourquoi 😕). il faudrait mettre:
Code:
Doublon = Range("NL!C417").End(xlUp).Value

pour s'arrêter à la dernière ligne utilisée.

@+

Gael
 
Re : doublon sur 2 feuilles

Bonjour Gael
À tout hasard :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim i&, j&, tmp, ComNL, ComPrevNL
   With Sheets("NL")
      ComNL = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)).Value
   End With
   With Sheets("PrevNL")
      ComPrevNL = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)).Value
      For i = UBound(ComPrevNL, 1) To 2 Step -1
         tmp = ComPrevNL(i, 1)
         For j = 2 To UBound(ComNL, 1)
            If ComNL(j, 1) = tmp Then Exit For
         Next j
         If j > UBound(ComNL, 1) Then .Rows(i).EntireRow.Delete
      Next i
   End With
End Sub[/B][/COLOR]
ROGER2327
#3880


Mardi 24 Gidouille 137 (Saint Gris-gris, ventre, SQ)
20 Messidor An CCXVIII
2010-W27-4T15:29:05Z
 
Re : doublon sur 2 feuilles

Bonjour Roger, Gael et le forum,

@ Roger: Oui il s'agit bien de la ligne 11 qui est a supprimer.

@ Gael: effectivement, j'ai remarqué le problème et entre temps j'avais changé le type de ma variable par LONG. Dans la macro, j'ai mis 1000 et non pas 417, je ne sais pas d'ou il vient.

@Roger: Merci, j'ai testé votre code et il fonctionne. je vais le décortiquer et essayer de l'adapter pour d'autre filtrage et mise à jours.

Merci à vous
 
Re : doublon sur 2 feuilles

Bonjour le Forum,

le code de ROGER fonctionne bien, j'ai essayé de le modifier pour que les lignes qui n'existent pas dans PrevNL soient ajoutées a partir de NL mais je n'y arrive pas (probablement a cause du copie/coller).

With Sheets("PrevNL")
ComNL = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)).Value
End With
With Sheets("NL")
ComPrevNL = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)).Value
For i = UBound(ComPrevNL, 1) To 2 Step -1
tmp = ComPrevNL(i, 1)
For j = 2 To UBound(ComNL, 1)
If ComNL(j, 1) = tmp Then Exit For
Next j
If j > UBound(ComNL, 1) Then .Rows(i).EntireRow.Copy
Sheets("PrevNL").Activate
Range("a2").Select
Do While ActiveCell.Value > ""
ActiveCell.Offset(1, 0).Select
Loop
Selection.Paste
Application.CutCopyMode = False
Sheets("NL").Activate
Next i
End With

et si vous auriez une piste pour mettre a jours les cellules de de A à H (PrevNL) des lignes qui existe dans les 2 feuilles NL et PrevNL.

Je bloque complètement.

Merci à vous.
 
Re : doublon sur 2 feuilles

Re...
À ce stade, il me semble qu'il ne s'agit pas seulement de supprimer éventuellement des lignes dans la feuille PrevNL, mais aussi d'en ajouter (ce sont il est n'était nullement question dans la demande initiale). S'il s'agit de cela, il faut donner précisément les critères commandant l'ajout d'enregistrements de la feuille NL à la feuille PrevNL.
À défaut d'une définition précise des règles, déposez un classeur montrant l'état des feuilles avant et après intervention.​
ROGER2327
#3888


Samedi 28 Gidouille 137 (Poche du Père Ubu, V)
24 Messidor An CCXVIII
2010-W28-1T16:44:24Z
 
Re : doublon sur 2 feuilles

Re bonjour Roger et le Forum,

en fait, il s'agit de comparer les numéros de la colonne C (numéro de commande) des feuilles PrevNL et NL avec trois possibilitées:

1° si il existe dans PrevNL et pas dans NL, supprimer la ligne correspondante dans PrevNL.

2° si il existe dans NL et pas dans PrevNL, il faut ajouter les lignes dans PrevNL.

3° si il existe dans les 2 feuilles, il faut copier la selection A(n):L(n) de NL sur PrevNL (sorte de mise à jours).

il n'en était pas question initialement car j'essais d'avancer pas à pas, je ne pensais pas être bloqué aussi rapidement.
 
Dernière modification par un modérateur:
Re : doublon sur 2 feuilles

Re...
C'est parfaitement clair. Je vous soumettrai une proposition demain ou après-demain, en raison d'une charge de travail un peu lourde ces jours-ci.​
ROGER2327
#3890


Hunyadi 29 Gidouille 137 (hunyadi gras - Nom d'Ubu, SS)
25 Messidor An CCXVIII
2010-W28-2T22:13:02Z
 
Re : doublon sur 2 feuilles

Bonjour

Je vous remercie de de vous penchez sur mes problemes.
Prenez votre temps, de mon côté, je travail sur une autre étape de mon projet.
 
Dernière modification par un modérateur:
Re : doublon sur 2 feuilles

Bonjour,
Chose promise, chose due :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim i&, j&, tmp, ComNL, ComPrevNL, CollPrevNL As New Collection
   With Sheets("NL")
      ComNL = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)).Value
   End With
   With Sheets("PrevNL")
      ComPrevNL = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp)).Value
      For i = UBound(ComPrevNL, 1) To 2 Step -1
         tmp = ComPrevNL(i, 1)
         On Error Resume Next
         CollPrevNL.Add tmp, CStr(tmp)
         On Error GoTo 0
         For j = 2 To UBound(ComNL, 1)
            If ComNL(j, 1) = tmp Then Exit For
         Next j
         If j > UBound(ComNL, 1) Then
            .Rows(i).EntireRow.Delete [COLOR="SeaGreen"]'suppression d'un enregistrement obsolète[/COLOR]
         Else
            Sheets("NL").Rows(j).Copy Destination:=.Rows(i).Cells(1, 1) [COLOR="SeaGreen"]'actualisation d'un enregistrement existant[/COLOR]
         End If
      Next i
      j = .Cells(.Rows.Count, 3).End(xlUp).Row
      For i = 2 To UBound(ComNL, 1)
         tmp = ComNL(i, 1)
         On Error GoTo E
         CollPrevNL.Add tmp, CStr(tmp)
         On Error GoTo 0
         j = j + 1
         Sheets("NL").Rows(i).Copy Destination:=.Rows(j).Cells(1, 1) [COLOR="SeaGreen"]'ajout d'un enregistrement[/COLOR]
R:    Next i
   End With
Exit Sub
E:
   On Error GoTo 0
   Resume R
End Sub[/B][/COLOR]
À tester soigneusement. (J'ai testé uniquement sur votre classeur d'essai.)​
ROGER2327
#3920


Jeudi 5 Tatane 137 (Saint Arsouille, patricien, SQ)
30 Messidor An CCXVIII
2010-W28-7T17:11:50Z
 
Re : doublon sur 2 feuilles

Roger,

Pour m'aider à la comprehenssion de votre code, pouvez-vous me dire où renvoi "Goto 0" et que fait "R:" dans votre code car je ne vois pas de Goto y faisant référence ?

Encore merci à vous
 
Re : doublon sur 2 feuilles

Re...
Roger,

Pour m'aider à la comprehenssion de votre code, pouvez-vous me dire où renvoi "Goto 0" et que fait "R:" dans votre code car je ne vois pas de Goto y faisant référence ?

Encore merci à vous
L' article Resume de l'aide de VisualBasic répondra mieux que je ne saurais le faire à vos interrogations. Pour y accéder, sélectionnez le mot clef Resume dans le code, et pressez la touche magique F1.

Vous verrez alors que, par exemple, Resume R renvoie à l'exécution du code à partir de la ligne R...​
Bonne journée.
ROGER2327
#3923


Vendredi 6 Tatane 137 (Saints Robot et Cornard, citoyens, SQ)
1er Thermidor An CCXVIII
2010-W29-1T09:47:07Z
 
Re : doublon sur 2 feuilles

Re

et quand il y a Goto 0, il se contente de passer a la ligne suivante

je ne pense que tres rarement a utiliser l'aide fourni avec le logiciel

grosse erreur

merci beaucoup
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
627
Réponses
5
Affichages
830
Réponses
7
Affichages
409
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…