Echapper à une donnée pour passer à la suivante

  • Initiateur de la discussion Initiateur de la discussion Boby71C
  • 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 !

Boby71C

XLDnaute Impliqué
Bonsoir à tous
Je collecte une référence sur une feuille pour aller la supprimer sur la seconde si elle s'y trouve. Jusque là, pas de problème.
Si la référence collectée n'existe pas sur la seconde feuille, je ne trouve pas l'astuce pour passer à la suivante.

J'ai essayé avec le code qui m'avait été donné ici, mais ça ne fonctionne pas.
exemple du code:
Dim c As Range
Set c = Cells.Find(What:="20", After:=ActiveCell, LookIn:=xlValues, LookAt _
:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase _
:=True)

Pouvez-vous me venir en aide ?
Merci
@+
 

Pièces jointes

Re : Echapper à une donnée pour passer à la suivante

Bonsoir Boby71C,

je te propose une autre macro:

Code:
Sub test()
Application.ScreenUpdating = False
derlig = Range("A65536").End(xlUp).Row
For lig = derlig To 12 Step -1
    valeur = Cells(lig, 1).Value
    With Sheets("Feuil2")
        Set trouve = .Columns("A").Find(What:=valeur, LookIn:=xlValues, LookAt:=xlWhole)
    End With
    If Not trouve Is Nothing Then Cells(lig, 1).Delete shift:=xlShiftUp
Next
With Sheets("Feuil2")
    .Range(.[A1], .[A1].End(xlDown)).Copy Range("A65536").End(xlUp).Offset(1, 0)
End With
Application.ScreenUpdating = True
End Sub

Bon test 🙂
 
Re : Echapper à une donnée pour passer à la suivante

Bonsoir skoobi
Merci pour ta réponse qui fonctionne très bien mais !!
Car malheureusement il y a un mais !!
Il est impératif de ne rien changer au données existantes sur la feuille 1. Dans notre cas, l'ordre est changé. Elles sont trop importantes, je vais me faire tuer si je change quelque chose.

@+
 
Re : Echapper à une donnée pour passer à la suivante

Re,

voici l'ajout à faire:

Code:
Sub test()
Application.ScreenUpdating = False
derlig = Range("A65536").End(xlUp).Row
For lig = derlig To 12 Step -1
    valeur = Cells(lig, 1).Value
    With Sheets("Feuil2")
        Set trouve = .Columns("A").Find(What:=valeur, LookIn:=xlValues, LookAt:=xlWhole)
    End With
    If Not trouve Is Nothing Then Cells(lig, 1).Delete shift:=xlShiftUp
Next
With Sheets("Feuil2")
    .Range(.[A1], .[A1].End(xlDown)).Copy Range("A65536").End(xlUp).Offset(1, 0)
End With
[B][COLOR="Green"]Range([A12], [A12].End(xlDown)).Sort Key1:=Range("A12"), Order1:=xlAscending, Header:=xlNo[/COLOR][/B]
Application.ScreenUpdating = True
End Sub
 
Re : Echapper à une donnée pour passer à la suivante

Bonjour à tous
Désolé Skoobi, ça ne fonctionne pas comme désiré.
Il est impératif de ne rien modifier sur les données initiales et dans ce cas, il y a un tri qui change radicalement l'ordre des données.
C'est de ma faute car j'avais mis des N° qui étaient dans l'ordre.😱

Merci beaucoup pour ton aide et désolé de t'avoir faits perdre ton temps.
Je joint un nouveau fichier avec les vrais N° utilisés pour mieux comprendre.

@+
 

Pièces jointes

Re : Echapper à une donnée pour passer à la suivante

Re bonjour,

et désolé de t'avoir faits perdre ton temps.

Non c'est moi, j'ai supprimé les projets sur la feuille 1 au lieu de ceux la feuille 2.
Voici le code corrigé:

Code:
Sub test()
Application.ScreenUpdating = False
With Sheets("Feuil2")
    derlig = .Range("A65536").End(xlUp).Row
    For lig = derlig To 1 Step -1
        valeur = .Cells(lig, 1).Value
        Set trouve = Columns("A").Find(What:=valeur, LookIn:=xlValues, LookAt:=xlWhole)
        If Not trouve Is Nothing Then .Cells(lig, 1).Delete shift:=xlShiftUp
    Next
    .Range(.[A1], .[A1].End(xlDown)).Copy Range("A65536").End(xlUp).Offset(1, 0)
End With
Application.ScreenUpdating = True
End Sub
 
Re : Echapper à une donnée pour passer à la suivante

Bonsoir Skoobi et le forum

Merci beaucoup pour ton code qui marche à merveille.

Je vais encore abuser de ta bonté en te demandant si tu peux m'expliquer le fonctionnement en détail car même en pas à pas, je ne saisis pas tout.
He oui, je ne suis pas un grand Maitre en la matière.😱

Si tu en as le temps bien sûr.
Encore merci
@+
 
Re : Echapper à une donnée pour passer à la suivante

Re,

tout d'abord, si tu ne connais With .... End With, regarde l'aide pour cette instruction.

Toutes les cellules ou plage qui ont un point devant, exemple:
.Range("A65536").End(xlUp).Row
.Cells(lig, 1).Value
.Cells(lig, 1).Delete shift:=xlShiftUp

font référence à ce qui se trouve après With, la feuille 2 ici.

Range("A65536").End(xlUp).Offset(1, 0): ici, il n'y pas de point devant ce qui signifie que cette cellule fait partie de la feuille depuis laquelle est lancée la macro donc la feuille 1.
Autre exemple: Columns("A").Find(What:=valeur, LookIn:=xlValues, LookAt:=xlWhole), feuille 1 également.

Set trouve = Columns("A").Find(What:=valeur, LookIn:=xlValues, LookAt:=xlWhole): veut dire la variable trouve aura comme addresse le projet (valeur) trouvé dans la feuille 1 colonne A. Si le projet n'a pas été trouvé, trouve vaudra "Nothing".

Espérant avoir éclairé ta lanterne 🙂
 
- 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

Discussions similaires

Réponses
2
Affichages
561
Réponses
3
Affichages
590
Retour