restreindre sélection à une colonne

  • Initiateur de la discussion Nickytchao
  • Date de début
N

Nickytchao

Guest
Re bonjour,
durant l'utilisation l'utilisateur doit se positionner sur une cellule de la colonne 1 ^puis cliquer un bouton pour valider son choix afin d'insérer des données (trop de détail tue le détail...)
Le pb c'est qu'il est possible qu'il se trompe de colonne, et donc foire le rapatriement.
Je voudrais afficher un message au cas où il ne pointe pas sur la bonne colonne.
Merci!
 
N

Nickytchao

Guest
Ouep, pas d'soucis!!!

Code:
Private Sub Insertion_Click()
' Récupère les infos de la ligne sélectionnée pour les insérer dans les champs correspondants
    Application.DisplayAlerts = False
    Selection.Copy
    If Not Application.ActiveCell.Column = '1' Then
        GoTo zero
    End If
    On Error GoTo zero
        UserForm3.Focus.Text = Selection
        UserForm3.Nom.Text = ActiveCell.Offset(0, 1).Value
        UserForm3.Fournisseur.Text = ActiveCell.Offset(0, 7).Value
        UserForm3.Dimension.Text = ActiveCell.Offset(0, 2).Value
        UserForm3.Dimension2.Text = ActiveCell.Offset(0, 3).Value
        UserForm3.Dimension3.Text = ActiveCell.Offset(0, 4).Value
        UserForm3.Dimension4.Text = ActiveCell.Offset(0, 5).Value
        Range('B3').Select
        Selection.AutoFilter field:=2
        Selection.AutoFilter field:=1
        Sheets(tampon2.Text).Select
        SelectFiltre.Visible = True
        Insertion.Visible = False
        Retour.Visible = False
        UserForm3.Show
    Application.DisplayAlerts = True
        
        Exit Sub
    
zero:
' Affiche la boite de dialogue erreur en cas de mauvaise sélection

    Insertion.Visible = True
    Retour.Visible = True
    UserForm2.Label1.Caption = 'Positionnez vous sur la référence'
    UserForm2.Show
    Exit Sub

End Sub


Euh...ouai j'aurai pu resteindre à

If Not Application.ActiveCell.Column = '1' Then
GoTo zero
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour NickyTchao, Ashaar, le Forum

Juste ceci dit en passant pour te conseiller pour une meilleure optimisation de ton Code, au lieu de

UserForm3.Focus.Text = Selection
UserForm3.Nom.Text = ActiveCell.Offset(0, 1).Value
UserForm3.Fournisseur.Text = ActiveCell.Offset(0,7).Value
UserForm3... Etc

Préfère (de loin) ce genre de Syntax, car VBA aura intégré en instance la référence à l'Object une seule fois plutôt qu'une instance à chaque fois à chaque ligne...

With UserForm3
&nbsp&nbsp&nbsp.Focus.Text = Selection
&nbsp&nbsp&nbsp.Nom.Text
&nbsp&nbsp&nbsp.etc
&nbsp&nbsp&nbsp.etc
End With

Par ailleurs les 'Select' sont à éviter le plus possible...

Bon Appétit
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Jean Charles, le Fil

Popy !!! ou éventuellement Poppy, alternativement Pop'$ !!!!

Big Bisous à Mo, et Give Five to Eric & Cyril !!!

Merci à Toi et bon appétit (Sorry pour l'incruste dans le Fil)@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir NickyTchao, JCA, Ashaar, le Forum

Ben merci quand même, mais sinon au lieu de :

Range('B3').Select
Selection.AutoFilter field:=2
Selection.AutoFilter field:=1

etc

écrire dans ce genre sans Select :
With Sheets('TaFeuille').Range('B3')
.AutoFilter field:=2
.AutoFilter field:=1
End With

Quoique dans ce cas de figure précis pour remettre tout visible dans un AutoFilter tu devrais faire ceci :

With Sheets('TaFeuille')
If .FilterMode = True Then .ShowAllData
End With

Bonne Soirée
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 816
Messages
2 092 355
Membres
105 376
dernier inscrit
lepage