Retourver les lignes disparue

lemarcheurfou

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin de votre aide, je vous explique le context j'ai un fichier de 30 000 lignes.
Dans ce fichier j'ai des lignes qui ont disparue comme par magis composé d'un id, nom et prénom (Mauvaise manip de ma part :( )..

Je veux donc retrouver ces lignes disparue avec une macro mais je sais pas faire.

Je vous joint un fichier pour avoir un exemple avec un résultat attendu...

Merci de votre aide par avance.
 

Pièces jointes

  • testmacro.xls
    24 KB · Affichages: 61
  • testmacro.xls
    24 KB · Affichages: 59
  • testmacro.xls
    24 KB · Affichages: 66

Victor21

XLDnaute Barbatruc
Re : Retourver les lignes disparue

Bonsoir lemarcheurfou, camarchepas.

Aucune ligne manquante sur le fichier que vous avez joint : je les ai comptées, il y en a bien 65536 ;)

Blague à part,( je n'ai pas compris l'exemple, ni le résultat attendu), qu'entendez-vous par lignes disparues ? Effacées, supprimées, masquées ???
 

lemarcheurfou

XLDnaute Nouveau
Re : Retourver les lignes disparue

Bonsoir lemarcheurfou, camarchepas.

Aucune ligne manquante sur le fichier que vous avez joint : je les ai comptées, il y en a bien 65536 ;)

Blague à part,( je n'ai pas compris l'exemple, ni le résultat attendu), qu'entendez-vous par lignes disparues ? Effacées, supprimées, masquées ???

Bonjour,

Vous vouilliez les lignes que j'ai souligné en rouge? Normalement je devrais avoir une autre ligne avant avec l'id dans la colonne B, le nom dans la colonne I et le prénom dans la colonne J mais cette ligne à disparu.

Dans la colonne I j'ai des numéros c'est numéro sont unique mais ils peuvent se repeter plusieurs fois. Je veux donc les numéros qui n'ont plus cette ligne...

Désolé je suis pas trop pédagogue..
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Retourver les lignes disparue

Re,

Pas d'autre solution que de récupérer la dernière sauvegarde, si vous l'avez enregistrée.
A tout hasard, farfouillez dans "C:\Users\VotreNom\AppData\Local\Microsoft\Office\UnsavedFiles" (à adapter selon votre config).
 

lemarcheurfou

XLDnaute Nouveau
Re : Retourver les lignes disparue

Re,

J'ai essayé mais j'ai aucune sauvegarde.

Je suis donc fichuu sniiff. Tampi je vais continuer à marcher haha.

Mais c'est pas la ligne que je veux retourver mais juste le numéro de la colonne I, qui lui est toujours présent.
 

lemarcheurfou

XLDnaute Nouveau
Re : Retourver les lignes disparue

Je vais essayer d'être plus claire‚ dans le fichier que je vous est ci-joint vous remarquerez différent numéro dans la colonne i. Dans la logique de mon fichier le numéro reste le même tant que je n'est pas inserer une nouvelle ligne avec un id‚ un nom et un prénom.
Mais la vous remarquerez que dans les lignes que j'ai remplis en rouge j'ai un changement de numéro sans avoir cette fameuse ligne disparu (id‚nom‚prénom).

Dans les "résultats attendu" je veux avoir tous les numéros qui change sans avoir avant une ligne ayant un id‚ nom et prénom. Vous avez compris les amis ?
 

ROGER2327

XLDnaute Barbatruc
Re : Retourver les lignes disparue

Bonsoir à tous.


À essayez :​
Code:
Sub toto()
Dim i&, j&, k&, r&, Plg As Range, v, w()
Const offsetCol& = 7
  Set Plg = Intersect(ActiveSheet.Columns("B").Cells, Selection)
  If Not Plg Is Nothing Then
    If Plg.Count > 1 Then
      r = Plg(1).Row + Plg.Count - 1
      ReDim w(1 To Plg.Count, 0)
      For i = 1 To Plg.Count
        If Not IsEmpty(Plg(i).Value) Then
          j = 0
          Do
            v = Empty
            j = j + 1
            If IsNumeric(Plg(i).Offset(j, offsetCol).Value) Then v = Plg(i).Offset(j, offsetCol).Value: Exit Do
          Loop While i + j < r
          If Not IsEmpty(v) Then
            Do: j = j + 1: Loop While (IsEmpty(Plg(i).Offset(j, offsetCol).Value) Or v = Plg(i).Offset(j, offsetCol).Value) And IsEmpty(Plg(i + j).Value) And i + j < r
            If IsEmpty(Plg(i + j).Value) Then If v <> Plg(i).Offset(j, offsetCol).Value Then k = k + 1: w(k, 0) = Plg(i).Offset(j, offsetCol).Value
          End If
          i = i + j - 1
        Else
        End If
      Next
      With ActiveSheet.[M2]
        Intersect(.CurrentRegion, .Parent.Columns(.Column)).Offset(1).ClearContents
        If k Then .Cells.Resize(k, 1).Value = w
      End With
    End If
  End If
End Sub
Mode d'emploi :
  1. Mettre le code dans un module standard.
  2. Sélectionner la plage d'identifiant à traiter (soit B2:B22 de l'onglet Sheet2 du classeur testmacro).
  3. Exécuter la procédure toto.
C'est du brut de fonderie juste pour voir si c'est ce qu'on cherche : le cas échéant, il sera temps de fignoler...


Bonne nuit.


ℝOGER2327
#7809


Mercredi 18 Pédale 142 (Saint Nosocome, carabin - fête Suprême Quarte)
22 Ventôse An CCXXIII, 8,9943h - persil
2015-W11-4T21:35:11Z
 

lemarcheurfou

XLDnaute Nouveau
Re : Retourver les lignes disparue

Bonsoir à tous.


À essayez :​
Code:
Sub toto()
Dim i&, j&, k&, r&, Plg As Range, v, w()
Const offsetCol& = 7
  Set Plg = Intersect(ActiveSheet.Columns("B").Cells, Selection)
  If Not Plg Is Nothing Then
    If Plg.Count > 1 Then
      r = Plg(1).Row + Plg.Count - 1
      ReDim w(1 To Plg.Count, 0)
      For i = 1 To Plg.Count
        If Not IsEmpty(Plg(i).Value) Then
          j = 0
          Do
            v = Empty
            j = j + 1
            If IsNumeric(Plg(i).Offset(j, offsetCol).Value) Then v = Plg(i).Offset(j, offsetCol).Value: Exit Do
          Loop While i + j < r
          If Not IsEmpty(v) Then
            Do: j = j + 1: Loop While (IsEmpty(Plg(i).Offset(j, offsetCol).Value) Or v = Plg(i).Offset(j, offsetCol).Value) And IsEmpty(Plg(i + j).Value) And i + j < r
            If IsEmpty(Plg(i + j).Value) Then If v <> Plg(i).Offset(j, offsetCol).Value Then k = k + 1: w(k, 0) = Plg(i).Offset(j, offsetCol).Value
          End If
          i = i + j - 1
        Else
        End If
      Next
      With ActiveSheet.[M2]
        Intersect(.CurrentRegion, .Parent.Columns(.Column)).Offset(1).ClearContents
        If k Then .Cells.Resize(k, 1).Value = w
      End With
    End If
  End If
End Sub
Mode d'emploi :
  1. Mettre le code dans un module standard.
  2. Sélectionner la plage d'identifiant à traiter (soit B2:B22 de l'onglet Sheet2 du classeur testmacro).
  3. Exécuter la procédure toto.
C'est du brut de fonderie juste pour voir si c'est ce qu'on cherche : le cas échéant, il sera temps de fignoler...


Bonne nuit.


ℝOGER2327
#7809


Mercredi 18 Pédale 142 (Saint Nosocome, carabin - fête Suprême Quarte)
22 Ventôse An CCXXIII, 8,9943h - persil
2015-W11-4T21:35:11Z

Bonjour ROGER2327,

Merci pour ton code c'est parfait c'est tout ce que je voulais j'ai bien mes résultats attendu.

Je te remercie encore une fois et merci à tous les autres membres(Victor21 et camarchepas).

Bonne journée à tous.
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 275
Membres
103 504
dernier inscrit
Marie28