XL 2016 Problème d'ouverture d'userform

piga25

XLDnaute Barbatruc
Bonjour le Forum
Je n'arrive pas à comprendre pourquoi j'ai cette erreur lors de l'ouverture de l'UserForm8
1027359
J'ai le code d'erreur suivant qui se produit :
1027358

Dans le code de l'UserForm8 , j'ai l'erreur, je pense à cette ligne : Set f = Sheets("feuil12")
Je ne comprends pas ma feuille est bien déclarée avec son nom natif ("feuil12") et non le nom de son onglet "Mouvement"
VB:
Private Sub UserForm_Initialize()
Dim f As Feuil12
  Me.Source.MultiSelect = fmMultiSelectMulti
  Set f = Sheets("feuil12")
  Me.ListBox1.List = Array("Inscription sur listing", "Départ PC pour effectuer mission", "Entrée dans la cavité", "Sortie de la cavité", "Retour PC pour signaler fin mission", "Quitte le site")
  Me.ListBox1.ListIndex = 0
  Me.Destination.Caption = Me.ListBox1.List(0)
  Me.Destination.TextAlign = fmTextAlignRight
  p = Me.ListBox1.ListIndex
  n = f.[A65000].Offset(, p * 3).End(xlUp).Row
  If n > 1 Then Me.Source.List = f.Range("A2:B" & n).Offset(, p * 3).Value Else Me.Source.Clear
  n = f.[D65000].Offset(, p * 3).End(xlUp).Row
  If n > 1 Then Me.Dest.List = f.Range("D2:E" & n).Offset(, p * 3).Value Else Me.Dest.Clear
  '---histo
  n = f.[V65000].End(xlUp).Row
  If n > 1 Then Me.Historique.List = f.Range("V2:Y" & n).Value Else Me.Historique.Clear
  Me.Source.Visible = False
  Me.b_prend.Visible = False
End Sub
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonsoir.
Feuil12 est un objet Worksheet connu, donc utilisez le en tant qu'expression Worksheet, à la place de f, dont vous n'avez pas besoin.
 

piga25

XLDnaute Barbatruc
Bonjour Dranreb, le Forum
je ne saisie pas bien, il faut que je remplace toutes les occurrences f. par sheets("feuil12") dans le module !!!!

Pourtant dans ce fichier là cela fonctionne. J'ai juste recopié l'userform et la feuille
 

Fichiers joints

Dernière édition:

piga25

XLDnaute Barbatruc
Bonjour Chris24, Dranreb, le Forum

J'ai déjà fait cela mais j'ai toujours la même erreur.
 

Chris24

XLDnaute Impliqué
Supporter XLD
RE

Remplace
Set f = Sheets("feuil12")
par
Set f = Sheets("Mouvement")

et supprime la déclaration
Dim f As Feuil12 dans UserForm_Initialize

VB:
Dim f As Worksheet


Private Sub UserForm_Initialize()
'Dim f As Feuil12
  Me.Source.MultiSelect = fmMultiSelectMulti
  Set f = Sheets("Mouvement")
  Me.ListBox1.List = Array("Inscription sur listing", "Départ PC pour effectuer mission", "Entrée dans la cavité", "Sortie de la cavité", "Retour PC pour signaler fin mission", "Quitte le site")
  Me.ListBox1.ListIndex = 0
  Me.Destination.Caption = Me.ListBox1.List(0)
  Me.Destination.TextAlign = fmTextAlignRight
  p = Me.ListBox1.ListIndex
  n = f.[A65000].Offset(, p * 3).End(xlUp).Row
  If n > 1 Then Me.Source.List = f.Range("A2:B" & n).Offset(, p * 3).Value Else Me.Source.Clear
  n = f.[D65000].Offset(, p * 3).End(xlUp).Row
  If n > 1 Then Me.Dest.List = f.Range("D2:E" & n).Offset(, p * 3).Value Else Me.Dest.Clear
  '---histo
  n = f.[V65000].End(xlUp).Row
  If n > 1 Then Me.Historique.List = f.Range("V2:Y" & n).Value Else Me.Historique.Clear
  Me.Source.Visible = False
  Me.b_prend.Visible = False

End Sub
Cdt
 

Dranreb

XLDnaute Barbatruc
Bonjour.
il faut que je remplace toutes les occurrences f. par sheets("feuil12") dans le module !!!!
Non, remplace toutes les occurrences f. par Feuil12. dans le module
Feuil12 est en effet directement une expression Worksheet.

Remarque: d'habitude je renomme d'abord les objets Worksheet de la rubrique Microsoft Excel Objets par un nom mnémonique commençant par Wsh. Donc WshMvts au lieu de Feuil12 par exemple.
 

piga25

XLDnaute Barbatruc
Re

Chris24 : Merci cela fonctionne.
Par contre ce que je ne comprends pas qu'elle est la différence entre:
Set f = Sheets("Mouvement") et Set f = sheets("feuil1")
Dranreb: je vais faire un essais comme tu le proposes
 

Dranreb

XLDnaute Barbatruc
Sheets est une collection d'éléments de plusieurs types possibles, principalement Worksheet et Chart, ayant pour clés les textes des onglets dans Excel, qui seuls peuvent être précisés entre parenthèse pour y chercher un élément. Les noms d'objets Worksheet de la rubrique Microsoft Excel Objet sont des noms d'objets VBA qui représentent ces entités Excel, ne peuvent faire l'objet d'une recherche d'un nom variable mais seulement utilisé directement pour désigné un objet. Toutefois ces objets ont une propriété String CodeName en lecture seule qui reproduit le nom de l'objet VBA qui les représente.
 

piga25

XLDnaute Barbatruc
Re,
Merci Dranreb, il faut absolument que je m'attache mieux saisir ces subtilités. J'ai encore beaucoup de boulot pour cela.

Il me reste juste un petit problème sur ce code situé dans l'userform8, cela ne met pas à jour la cellule N1 donc ne recopie rien dans la textbox

VB:
Private Sub CommandButton1_Click()
Concatene
UserForm2.TextBox4.Value = f.[N1].Value
Me.Main.Clear
Unload Me
UserForm2.Show
End Sub
Code:
Sub Concatene()
Dim Cel As Range, Co As Range
Dim Lg, i As Long
Application.ScreenUpdating = False
With Sheets("Mouvement")
k = [S1]
    If k > 0 Then
      For i = 2 To k + 1
      .Range("O" & i).Select
      ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[3],"" de "",RC[2],"" à "",RC[4])"
    Next i
    End If
Lg = [O65536].End(xlUp).Row
  
    With Sheets("Mouvement").Range("N1")
      .ClearContents
      For Each Cel In Range("O2:O" & Lg)
        If Cel <> "" Then
        .Value = .Value & Cel.Value & Chr(10)
        Else: Exit For
        End If
      Next Cel
    End With
    End With
End Sub
 

Fichiers joints

piga25

XLDnaute Barbatruc
Re Chris
Je ne comprends pas pourquoi que cela ne fonctionne pas pour moi. C'est comme si le code concatene ne marche pas, alors que si je lance le code isolement cela va

Pour le problème d'ouverture de l'userform c'est résolue.
Pour l'autre problème je préfère ouvrir un nouveau fil.
 
Dernière édition:

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas