Microsoft 365 ListBox - colonne Lien Hypertexte

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

Scorpio

XLDnaute Impliqué
Bonjour à tous,
J'ai récupéré ce travail dans le Forum, et j'aimerais, car je ne suis pas un champion VBA, faire une correction.
En fait, j'ajoute dans la colonne "E", de la feuil1, des liens hypertextes, et, lorsque je fait le transfert dans la feuille "Transfert",
le lien ne suis pas, il n'est plus un lien, voilà.
Est-ce qu'un membre pourrais juste, s'il vous plaît, me dépanner.
Je vous en remercie et à ++++
 

Pièces jointes

Bonjour Scorpio,
VB:
Private Sub CmdRecup_Click()
Dim ligne&, i&
ligne = 2
With Sheets("recup")
    .[A2:D1000].ClearContents
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then Sheets("BD").Rows(i + 2).Copy .Rows(ligne): ligne = ligne + 1
    Next
    .Visible = xlSheetVisible 'si la feuille est masquée
    Application.Goto .[A1]
End With
Call TriRecup
Unload UserForm1
End Sub
A+
 
VB:
Private Sub CommandButton1_Click() 'Extraire sur feuille "Transfert"
Dim tablo(), i&, ligne&, x$, j As Variant
With [Tableau1]
    ReDim tablo(1 To .Rows.Count, 1 To 1)
    For i = 1 To .Rows.Count
        tablo(i, 1) = .Cells(i, 1) & .Cells(i, 2) & .Cells(i, 3) & .Cells(i, 4) & .Cells(i, 5)
    Next
End With
ligne = 2
With Sheets("Transfert")
    .[A2:E1000].Clear
    For i = 0 To ListBox1.ListCount - 1
        With ListBox1: x = .List(i, 0) & .List(i, 1) & .List(i, 2) & .List(i, 3) & .List(i, 4): End With
        j = Application.Match(x, tablo, 0)
        If IsNumeric(j) Then
            [Tableau1].Rows(j).Copy .Rows(ligne)
            ligne = ligne + 1
        End If
    Next
    .Visible = xlSheetVisible 'si la feuille est masquée
    Application.Goto .[A1]
End With
Unload UserForm1
End Sub
Mettez des liens hypertextes où vous voulez en Feuil1.
 
VB:
Private Sub CommandButton1_Click() 'Extraire sur feuille "Transfert"
Dim d As Object, i&, x$, ligne&
Set d = CreateObject("Scripting.Dictionary")
With [Tableau1]
    For i = 1 To .Rows.Count
        x = .Cells(i, 1) & .Cells(i, 2) & .Cells(i, 3) & .Cells(i, 4) & .Cells(i, 5)
        If Not d.exists(x) Then d(x) = i 'mémorise la ligne
    Next
End With
ligne = 2
With Sheets("Transfert")
    .Range("A2:E" & .Rows.Count).Clear
    For i = 0 To ListBox1.ListCount - 1
        With ListBox1: x = .List(i, 0) & .List(i, 1) & .List(i, 2) & .List(i, 3) & .List(i, 4): End With
        If d.exists(x) Then
            [Tableau1].Rows(d(x)).Copy .Rows(ligne)
            ligne = ligne + 1
        End If
    Next
    .Cells(ligne, 2) = "Total"
    .Cells(ligne, 3) = "=SUM(C1:C" & ligne - 1 & ")"
    .Cells(ligne, 3).NumberFormat = "#,##0.00"
    .Cells(ligne, 2).Resize(, 2).Font.Bold = True 'gras
    .Visible = xlSheetVisible 'si la feuille est masquée
    Application.Goto .[A1]
End With
Unload UserForm1
End Sub
Au lieu de Application.Match j'utilise maintenant le Dictionary, c'est plus rapide si le tableau est grand.
 
Dernière édition:
Re bonjour job75,
Est-ce encore possible, s'il te paît, d'apporter des corrections dans mon projet,
si oui,
j'ai ajouté un Frame1 avec 9 CheckBox de feuil2 à feuil10, et 1 bouton de transfert ligne par ligne, et choix de la feuille.
Seulement si c'est possible job75, et merci beaucoup.
 

Pièces jointes

Voyez le fichier joint et le code du 2ème bouton de transfert :
VB:
Private Sub CommandButton3_Click() 'Transfert ligne par ligne sur feuille choisie
Dim tablo(), i&, ligne&, x$, j As Variant
With [Tableau1]
    ReDim tablo(1 To .Rows.Count, 1 To 1)
    For i = 1 To .Rows.Count
        tablo(i, 1) = .Cells(i, 1) & .Cells(i, 2) & .Cells(i, 3) & .Cells(i, 4) & .Cells(i, 5)
    Next
End With
For i = 1 To 9
    If Me("OptionButton" & i) Then Exit For
Next
If i = 10 Then MsgBox "Choisissez une feuille pour le transfert...": Exit Sub
With Sheets(Me("optionButton" & i).Caption)
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1 '1ère ligne vide
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            With ListBox1: x = .List(i, 0) & .List(i, 1) & .List(i, 2) & .List(i, 3) & .List(i, 4): End With
            j = Application.Match(x, tablo, 0)
            If IsNumeric(j) Then
                [Tableau1].Rows(j).Copy .Rows(ligne) 'copier-coller
                [Tableau1].Rows(j).Delete xlUp 'supprime la ligne
                ligne = ligne + 1
            End If
        End If
    Next
    .Cells(ligne, 2) = "Total"
    .Cells(ligne, 3) = "=SUM(C1:C" & ligne - 1 & ")"
    .Cells(ligne, 3).NumberFormat = "#,##0.00"
    .Cells(ligne, 2).Resize(, 2).Font.Bold = True 'gras
    .Visible = xlSheetVisible 'si la feuille est masquée
    Application.GoTo .[A1]
End With
Unload UserForm1
End Sub
La propriéte MultiSelect de ListBox1 est sur 1 - fmMultiSelectMulti.

Comme on supprimes des lignes du tableau source on ne peut plus utiliser le Dictionary.

Je n'ai pas modifié la macro du 1er bouton de transfert.
 

Pièces jointes

- 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
7
Affichages
890
Réponses
7
Affichages
483
Réponses
5
Affichages
1 K
Réponses
19
Affichages
2 K
Retour