XL 2019 Inverser une colonne sur mon USF

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

Phil Du59

XLDnaute Nouveau
Bonjour à tous

Je souhaiterais remplacer sur le USF uniquement (OPEN LOG) , la colonne CALLSIGN par QSO N° qui reprendrait la numérotation de la colonne A de la feuille Excel sans modifier cette dernière car elle me sert de BDD annuelle et en empêchant la recopie de la cboActivation sur le USF quand je la sélectionne sauf sur la feuille Excel , donc en gros inverser la colonne B avec la A sur le USF , j'ai bien essayer des petites choses que je pensais mais sans grand succès .
D'avance merci pour votre aide précieuse, belle journée

Philippe , débutant et sans connaissance .
 

Pièces jointes

Solution
Bonjour Phil Du59, le forum,

Dans la feuille LOG modifier la macro CommandButton1_Click avec :
VB:
With UserForm1.ListBox1
    .ColumnCount = plage.Columns.Count
    .List = plage.Rows(IIf(plage.Row = 2, 1, 0)).Value
    .List(0, 0) = plage.Cells(IIf(plage.Row = 2, 1, 0), 0) 'titre de la 1ère colonne
End With
With UserForm1.ListBox2
    .ColumnCount = plage.Columns.Count
    a = plage
    b = plage.Columns(0).Resize(, 2) 'au moins 2 éléments
    For i = 1 To UBound(a): a(i, 1) = b(i, 1): a(i, 5) = Format(a(i, 5), "hh:mm"): Next i
    .List = a
    If plage.Row = 2 Then .Clear Else .TopIndex = .ListCount
End With
Edit : avec le tableau b c'est plus rapide.

A+
Bonjour Phil Du59, le forum,

Dans la feuille LOG modifier la macro CommandButton1_Click avec :
VB:
With UserForm1.ListBox1
    .ColumnCount = plage.Columns.Count
    .List = plage.Rows(IIf(plage.Row = 2, 1, 0)).Value
    .List(0, 0) = plage.Cells(IIf(plage.Row = 2, 1, 0), 0) 'titre de la 1ère colonne
End With
With UserForm1.ListBox2
    .ColumnCount = plage.Columns.Count
    a = plage
    b = plage.Columns(0).Resize(, 2) 'au moins 2 éléments
    For i = 1 To UBound(a): a(i, 1) = b(i, 1): a(i, 5) = Format(a(i, 5), "hh:mm"): Next i
    .List = a
    If plage.Row = 2 Then .Clear Else .TopIndex = .ListCount
End With
Edit : avec le tableau b c'est plus rapide.

A+
 

Pièces jointes

Dernière édition:
Le code à modifier dans CommandButton1

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, a, i&
Dim Colonnes
Colonnes = Array(1, 3, 4, 5, 6, 7, 8) 'colonnes à afficher

Set plage = Range("A3:H" & Cells(Cells.Rows.Count, "B").End(xlUp).Row)
With UserForm1.ListBox1
    .ColumnCount = UBound(Colonnes) + 1
    .List = Application.Index(Range("A2:H2"), [Row(1:2)], Colonnes)
End With

With UserForm1.ListBox2
    .ColumnCount = UBound(Colonnes) + 1
    a = plage
    For i = 1 To UBound(a)
      a(i, 6) = Format(a(i, 6), "hh:mm")
    Next i

    .List = Application.Index(a, Evaluate("Row(1:" & plage.Rows.Count & ") "), Colonnes)
    
    If plage.Row = 2 Then .Clear Else .TopIndex = .ListCount
End With
With UserForm1.ListBox3: .Clear: .AddItem [B1]: End With
With Sheets("STATS").[H2:Q31]
    Application.ScreenUpdating = False: .Parent.Activate: Me.Activate: Application.ScreenUpdating = True 'exécute le tri
    UserForm1.ListBox4.ColumnCount = .Columns.Count
    UserForm1.ListBox4.ColumnWidths = Application.Rept((UserForm1.ListBox4.Width - 10) \ .Columns.Count & ";", .Columns.Count)
    If Application.Count(.Columns(1)) Then UserForm1.ListBox4.List = .Resize(Application.Count(.Columns(1))).Value
End With
With UserForm1.ListBox5: .Clear: .AddItem Sheets("STATS").[L1]: End With
UserForm1.Show 0 'ouverture en non modal
End Sub
 
Bonjour Phil Du59, le forum,

Dans la feuille LOG modifier la macro CommandButton1_Click avec :
VB:
With UserForm1.ListBox1
    .ColumnCount = plage.Columns.Count
    .List = plage.Rows(IIf(plage.Row = 2, 1, 0)).Value
    .List(0, 0) = plage.Cells(IIf(plage.Row = 2, 1, 0), 0) 'titre de la 1ère colonne
End With
With UserForm1.ListBox2
    .ColumnCount = plage.Columns.Count
    a = plage
    b = plage.Columns(0).Resize(, 2) 'au moins 2 éléments
    For i = 1 To UBound(a): a(i, 1) = b(i, 1): a(i, 5) = Format(a(i, 5), "hh:mm"): Next i
    .List = a
    If plage.Row = 2 Then .Clear Else .TopIndex = .ListCount
End With
Edit : avec le tableau b c'est plus rapide.

A+
Merci Job75, vous avez encore bien travaillé et je vais regarder de près la modif qu'il fallait apporter .
J'ai encore une modif à faire sur la feuille STATS mais je vais essayer de comprendre et de le faire, autrement je posterais à nouveau .
Encore merci et bon week-end .
 
Le code à modifier dans CommandButton1

Code:
Private Sub CommandButton1_Click()
Dim plage As Range, a, i&
Dim Colonnes
Colonnes = Array(1, 3, 4, 5, 6, 7, 8) 'colonnes à afficher

Set plage = Range("A3:H" & Cells(Cells.Rows.Count, "B").End(xlUp).Row)
With UserForm1.ListBox1
    .ColumnCount = UBound(Colonnes) + 1
    .List = Application.Index(Range("A2:H2"), [Row(1:2)], Colonnes)
End With

With UserForm1.ListBox2
    .ColumnCount = UBound(Colonnes) + 1
    a = plage
    For i = 1 To UBound(a)
      a(i, 6) = Format(a(i, 6), "hh:mm")
    Next i

    .List = Application.Index(a, Evaluate("Row(1:" & plage.Rows.Count & ") "), Colonnes)
   
    If plage.Row = 2 Then .Clear Else .TopIndex = .ListCount
End With
With UserForm1.ListBox3: .Clear: .AddItem [B1]: End With
With Sheets("STATS").[H2:Q31]
    Application.ScreenUpdating = False: .Parent.Activate: Me.Activate: Application.ScreenUpdating = True 'exécute le tri
    UserForm1.ListBox4.ColumnCount = .Columns.Count
    UserForm1.ListBox4.ColumnWidths = Application.Rept((UserForm1.ListBox4.Width - 10) \ .Columns.Count & ";", .Columns.Count)
    If Application.Count(.Columns(1)) Then UserForm1.ListBox4.List = .Resize(Application.Count(.Columns(1))).Value
End With
With UserForm1.ListBox5: .Clear: .AddItem Sheets("STATS").[L1]: End With
UserForm1.Show 0 'ouverture en non modal
End Sub
Merci Rheeem, merci pour votre réponse, je vais y regarder pour comprendre .
Bon week-end .
 
j'ai la version 2019 mais je vois que quand j'enregistre j'ai une fenêtre qui me demande "voir PJ" et c'est noté Excel 97/2003 , donc peut être décocher la case ?
Si tu as cette fenêtre qui te parle d'Excel 97/2003, c'est justement parce que ton classeur a l'extension "xls".

Si tu choisis l'extension "xlsm", ton classeur sera enregistré dans le format d'Excel 2019.
 
- 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
429
Retour