Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Naar een rij springen a.d.h.v. een cijfer in een cel.  (gelezen 10433 keer)

0 leden en 1 gast bekijken dit topic.

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #30 Gepost op: 03 november 2021, 16:02:30 »
Dag "MollyVH" , thanks voor de suggesties , maar ik zit blijkbaar met een vervelende fout en weet niet hoe op te lossen :
als er maar één rekord aanwezig is dan krijg ik bij sommige 2 x de rij ?
doe eens de test met "mauro" = 1 rij , "jesse" & "hues" geven 2 rijen ?
k'begrijp er niets van...

Mvg,
Montagnard.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #31 Gepost op: 03 november 2021, 16:22:44 »
Juist ja, 'k zie het ook.
Maar jij en ik weten dat er geen 2 bestanden met dezelfde naam in dezelfde map kunnen staan.
En dat is volgens je lijst wel het geval. Dat betekent dat je het in een andere hoek zal moeten gaan zoeken, namelijk bij het bestanden importeren. Dat heb je blijkbaar zo geregeld dat bij importeren alle gevonden bestanden gewoon worden toegevoegd aan je lijst, ergo ze kunnen er finaal twee keer of meer in staan en toch niet dubbel op je pc zijn opgeslagen.
Misschien een goed idee om je lijst eens volledig te wissen, en de importmethodiek even onder de microscoop te leggen vooraleer je terug importeert. Ik kan daar weinig concrete raad over geven, alles zal afhangen van hoe je bestandssysteem is opgebouwd. Maar daar kom je zelf wel uit, denk ik.
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #32 Gepost op: 03 november 2021, 17:44:07 »
Hallo Montagnard,

Toch nog even verder gekeken. Het is een keuze die ik niet in jouw plaats kan maken, maar mocht je daar geen bezwaar tegen hebben om in je lijst (dus vanaf rij 21) ook het volledige pad op te nemen, dan zou één extra instructie volstaan binnen de importprocedure die de duplicaten verwijdert, dan kan dit alvast niet meer gebeuren.

Het enige dat vervolgens nog 'fout' kan gaan is dat je inderdaad hetzelfde nummer op verschillende plaatsen op de pc hebt staan, maar laat het vorige misschien eerst even bezinken.
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #33 Gepost op: 03 november 2021, 19:37:29 »
@Montagnard, hieronder een manier om je MP3 bestanden op te halen en weg te schrijven met het complete pad. Dit zou direct moeten werken in jouw bestand.

Als je vervolgens nog een change event(bvb na dubbelklik) toevoegt om de bestanden te verwijderen, heb je de betreffende folders niet te benaderen (wat Molly ook terecht voorstelde)

Sub jec()
 Dim ar() As Variant, xPath As String, x As Long, fl As Variant
  With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show Then
      xPath = .SelectedItems(1)
      For Each fl In CreateObject("scripting.filesystemobject").getfolder(xPath).Files
        If Right(UCase(fl), 4) = ".MP3" Then
           ReDim Preserve ar(x)
           ar(x) = fl.Path
           x = x + 1
        End If
      Next
      If x = Empty Then Exit Sub
      With Sheets("Blad2")
       .Range("A21", .Range("A" & Rows.Count).End(xlUp)).ClearContents
       .Range("A21").Resize(x) = Application.Transpose(ar)
      End With
   End If
 End With
End Sub

Offline Warme bakkertje

  • Volledig lid
  • **
  • Berichten: 215
  • Geslacht: Man
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #34 Gepost op: 04 november 2021, 04:17:22 »
Arnold,

Er zitten +/- 28 duplicaten in je lijst. In kolom C heb ik ze voor je opgelijst.

Naast elk duplicaat staat "Duplicaat van rij .." zodat je het nog even kan nakijken alvorens ze te verwijderen.

In kolom D staat een opgeschoonde lijst.
Windows 10 Home   NLD 64bit

Microsoft Office Professional Plus 2016 US

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #35 Gepost op: 04 november 2021, 07:14:37 »
goedemorgen iedereen !
bedankt voor alle tips en het doet me deugd dat Jullie allemaal me willen helpen  :)

dat er dubbels inzitten dat weet ik , is een onderdeel van hetgeen ik opgezet heb : de dubbels indien gewenst er uit halen.
MAAR : ik importeer map per map , dus als er dubbels zijn dan krijgen ze sowieso elk een andere rij ?

ik heb eens alle records gewist en dan eerst de map "\Muziek\Arnold's Beats" geïmporteerd met o.a. daarin de record "Mauro Picotto - Komodo.mp3" , die kreeg rij 27 !
dan de map "\Muziek\Beats" met ook daarin de record "Mauro Picotto - Komodo.mp3" , die kreeg rij 182 !
vermist ze allebei uit een andere map komen hebben ze dus ook allebei een ander pad.

maar als ik zoek op "mauro" dan krijg ik de 2 records maar ze krijgen alle 2 dezelfde rij : 27 , EN allebei hetzelfde pad , namelijk van de eerst gevonden.
dus moet er een fout zitten in de code bij het zoeken , die de records uit de lijst ophaalt ?

en als er dus dubbels zijn uit verschillende mappen dan was het mijn bedoeling , zoals ik gisteren in mijn reactie#28 schreef , om 1 van beide indien gewenst te kunnen wissen op mijn harde schijf...
ik weet ook wel dat er software bestaat om dubbele bestanden te zoeken/verwijderen maar dan is de fun en uitdaging weg  :(...

vooraleer verder te gaan moet dus eerst die fout er uit van dezelfde rij...

Mvg,
Arnold.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #36 Gepost op: 04 november 2021, 08:02:43 »
@Veerj : waar juist in mijn bestand implementeer ik je code ? en hoe roep ik ze dan op ?  :-[ .
Mvg,
Arnold.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #37 Gepost op: 04 november 2021, 08:32:16 »
Als je de code in zijn geheel kopieert en achter een module zet werkt het :)

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #38 Gepost op: 04 november 2021, 09:11:28 »
@ Veerj,

Mogelijk ben ik nog niet goed wakker, maar veronderstelt jouw methode niet dat alle files in dezelfde map staan? Ik dacht dat het Montagnard's bedoeling was dat hij eender wanneer te kiezen mappen zou kunnen toevoegen.

@ Arnold,

Zoals ik in een vorig bericht aangaf zou je jezelf veel leed kunnen besparen door het ganse pad in je basislijst op te nemen. Om te importeren zijn er voldoende methodes te verzinnen, maar eerst graag je mening over toevoeging van het pad (voor mezelf zou ik die lijst gewoon op een ander blad zetten)
Voor ongeveer alles is wel een oplossing te verzinnen. Ook zonder het pad krijgen we je laatste ergernis weg. Bij wijze van voorbeeld hierbij een licht uitgebreide code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
    Application.EnableEvents = False
    Range("b4:d18").ClearContents
    If Target <> "" Then
        tezoekentitel = Cells(2, 2)
        Range("b4:d18").ClearContents
        nummers = Filter(Application.Transpose(Range("a21:a" & Cells(Rows.Count, 1).End(xlUp).Row)), tezoekentitel, True, vbTextCompare)
        Select Case UBound(nummers)
            Case -1
                MsgBox "er zijn geen titels met deze tekst", vbInformation, "Belangrijke info"
                    Range("b4:d18").ClearContents: Range("B2").ClearContents
            Case Is > 14
                MsgBox "er zijn " & UBound(nummers) & " titels met dezelfde tekst gevonden" + (Chr(13)) + (Chr(13)) + "            verfijn Uw zoekopdracht", vbInformation, "Belangrijke info"
                    Range("b4:d18").ClearContents: Range("B2").ClearContents
            Case Else
                ReDim rijnummer(0 To UBound(nummers))
                ReDim hlink(0 To UBound(nummers))
                teller = 0
                For I = 21 To Cells(Rows.Count, 1).End(xlUp).Row
                    If UBound(Filter(nummers, Cells(I, 1), True, vbTextCompare)) > -1 Then
                        rijnummer(teller) = I
                        hlink(teller) = Cells(I, 1).Hyperlinks(1).Address
                        teller = teller + 1
                    End If
                Next I
                Cells(4, 2).Resize(UBound(nummers) + 1) = Application.Transpose(nummers)
                Cells(4, 4).Resize(UBound(nummers) + 1) = Application.Transpose(rijnummer)
                For I = 0 To UBound(nummers)
                    Cells(I + 4, 2).Hyperlinks.Add Anchor:=Cells(I + 4, 2), Address:=hlink(I)
                Next I
        End Select
    End If
    Application.EnableEvents = True
End If
Cells(2, 2).Font.Underline = xlUnderlineStyleNone
Range("B4:B18").Font.Underline = xlUnderlineStyleNone
Range("A21").Select
Range("B2").Select
End Sub

Maar, wat ik ook al aangaf, dat staat los van de mogelijkheid dat je meer dan één keer dezelfde map toevoegt (per ongeluk, of omdat je bv. mp3's aan die map hebt toegevoegd), dus dat doen we wel in een volgende fase.
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #39 Gepost op: 04 november 2021, 09:49:41 »
Niet schrikken, hé, maar hierbij al een iets kortere  ;) importprocedure die er meteen voor zorgt dat dezelfde bestanden geen 2 maal in de lijst kunnen komen. Net als de procedure van Veerj maak ik namelijk eerst de bestaande lijst leeg.
Het uitgangspunt is wel (maar dat lijkt me evident) dat alle mp3's in een hoofdmap ("e:\muziek") staan, en daarbinnen mogen dan een pak submappen staan. In één beweging wordt het ganse pakketje dan ingelezen.
Sub Afbeelding8_Klikken()
   
Application.EnableEvents = False
With Sheets("Blad1")
    .Range("b2,b4:d18").ClearContents
    laatsterij = .Cells(Cells.Rows.Count, 1).End(xlUp).Row
    If laatsterij > 20 Then .Range("A21:A" & laatsterij).ClearContents
    a = Split(CreateObject("wscript.shell").exec("cmd /c Dir ""e:\muziek\*.mp3""/b/o:n/s").stdout.readall, vbCrLf)
    .Cells(21, 1).Resize(UBound(a)) = Application.Transpose(a)
End With
Application.EnableEvents = True

End Sub

Bijkomend ideetje? Misschien er geen hyperlinks aan toevoegen, maar dit enkel doen in het resultatenlijstje van de zoekactie? Dan moeten we wel  hierna de change-eventcode nogmaals even aanpassen.
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #40 Gepost op: 04 november 2021, 11:14:57 »
Bijkomend ideetje? Misschien er geen hyperlinks aan toevoegen, maar dit enkel doen in het resultatenlijstje van de zoekactie? Dan moeten we wel  hierna de change-eventcode nogmaals even aanpassen.
dat zou idd uitstekend zijn , zodat ik enkel een song kan laten afspelen van uit het resultatenlijstje .

ik loop echter tegen een foutmelding aan , ik heb vooreerst je beide laatste code's ( 1 - zoeken en 2 - importeren) in mijn bestand gekopieerd , het bestand opgeslagen , daarna mijn records ingeladen( man da ging super vlug  :o ) en terug opgeslagen...
maar als ik een zoekaktie doe krijg ik onderstaande foutmelding...

Mvg,
Arnold.
HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #41 Gepost op: 04 november 2021, 11:34:37 »
@Molly, idd kijkt die code alleen naar 1 map.
Als je meerdere folders tegelijk wilt doorzoeken zou ik ook voor het shell object gaan.

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #42 Gepost op: 04 november 2021, 11:58:06 »
@ Arnold,

Citaat
man da ging super vlug  :o
Plezant hé?

Uiteraard krijg je daar die foutmelding, maar ik wou eerst over het vorige je mening kennen. Ik had in mijn vorig bericht daarover al gezegd dat we de change-eventcode zouden moeten corrigeren. Dus bij deze:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
    Application.EnableEvents = False
    Range("b4:d18").ClearContents
    If Target <> "" Then
        tezoekentitel = Cells(2, 2)
        Range("b4:d18").ClearContents
        nummers = Filter(Application.Transpose(Range("a21:a" & Cells(Rows.Count, 1).End(xlUp).Row)), tezoekentitel, True, vbTextCompare)
        Select Case UBound(nummers)
            Case -1
                MsgBox "er zijn geen titels met deze tekst", vbInformation, "Belangrijke info"
                    Range("b4:d18").ClearContents: Range("B2").ClearContents
            Case Is > 14
                MsgBox "er zijn " & UBound(nummers) & " titels met dezelfde tekst gevonden" + (Chr(13)) + (Chr(13)) + "            verfijn Uw zoekopdracht", vbInformation, "Belangrijke info"
                    Range("b4:d18").ClearContents: Range("B2").ClearContents
            Case Else
                ReDim rijnummer(0 To UBound(nummers))
                teller = 0
                For I = 21 To Cells(Rows.Count, 1).End(xlUp).Row
                    If UBound(Filter(nummers, Cells(I, 1), True, vbTextCompare)) > -1 Then
                        rijnummer(teller) = I
                        teller = teller + 1
                    End If
                Next I
                Cells(4, 2).Resize(UBound(nummers) + 1) = Application.Transpose(nummers)
                Cells(4, 4).Resize(UBound(nummers) + 1) = Application.Transpose(rijnummer)
                For I = 0 To UBound(nummers)
                    Cells(I + 4, 2).Hyperlinks.Add Anchor:=Cells(I + 4, 2), Address:=Cells(I + 4, 2)
                Next I
        End Select
    End If
    Application.EnableEvents = True
End If
Cells(2, 2).Font.Underline = xlUnderlineStyleNone
Range("B4:B18").Font.Underline = xlUnderlineStyleNone
Range("A21").Select
Range("B2").Select
End Sub

Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #43 Gepost op: 04 november 2021, 12:04:18 »
En één moment verder nakijken brengt me bij het volgende: heeft het nog enig nut om het rijnummer toe te voegen aan je zoekresultaat?
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.385
  • Geslacht: Man
  • To Windows or not to Windows , that's the question
Re: Naar een rij springen a.d.h.v. een cijfer in een cel.
« Reactie #44 Gepost op: 04 november 2021, 12:08:50 »
En één moment verder nakijken brengt me bij het volgende: heeft het nog enig nut om het rijnummer toe te voegen aan je zoekresultaat?
1) vooreerst de beide codes ingebracht en alles werkt als een tiereliere  :thumbsup:
2) nee idd hebben die rijnummers normaal geen nut meer als ik in de toekomst die niet meer nodig heb om een (dubbele) rekord te wissen ?
3) als ik dan nog van uit dit Excel bestand een dubbele record zou kunnen wissen op mijn HD dan zou dat de max zijn !
4) ik ga nu zelf proberen om de suggestie om de records in blad2 in te lezen toe te passen en alle code daaromtrent aan te passen...
nog ne fijne middag,
Arnold.


HP ProBook 450 G3 15 inch
OS : Windows 11 Pro NLD 64bit
Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
16 GB  Vengeance 2666 MHz
KINGSTON SA400S37480G - 447,13 GB als bootdisk
WD Blue Solid state 2 TB - intern - M.2 2280 - SATA als datadisk
AV: Windows Defender
FW: Windows Firewal

 


www.combell.com