XL 2016 Formulaire VBA feuille active

JeanDidouille

XLDnaute Nouveau
Bonjour à toutes et à tous,

Avant toute chose, je précise que je suis ultra novice sur vba et vous remercie pour votre indulgence :)

Actuellement, j'ai un petit problème concernant le code de mon formulaire sur Excel. Celui-ci se trouve au niveau du bouton "valider" dans le Userform "NouveauMédecin".

Le formulaire permet de rentrer de nouveaux contacts qui s'ajoutent à la fin d'un tableau et ce tableau est présent dans plusieurs onglets. Chaque onglet est destiné à être utilisé par une personne.

Ainsi, j'aimerai que chaque personne avec son onglet, puisse exécuter le même code permettant d'ajouter un contact dans leur tableaux. J'ai essayé avec la fonction ActiveSheet.select (au lieu de devoir renseigner le nom de chaque feuilles), sans succès.

Pour ainsi dire, j'aimerai éviter de re-coder le même formulaire pour chaque onglet.

En vous remerciant par avance de l'aide que vous pourrez m'apportez :)

Bonne fin de journée ! :)

Ci-joint, le code lié au bouton "valider" du formulaire permettant d'ajouter un nouveau contact

VB:
Private Sub Valider_Click()

' Saisie de la location dans la base de données

    Dim ligne As Integer
    Dim ActiveSheet As Object
    
    ligne = ActiveSheet.Select.[a2].End(xlDown).Row + 1

    
    Sheets("ActiveSheet").Range("A" & ligne) = TextBox_Nom
    Sheets("ActiveSheet").Range("B" & ligne) = TextBox_AdresseMail
    Sheets("ActiveSheet").Range("C" & ligne) = ComboBox_Importance
    Sheets("ActiveSheet").Range("D" & ligne) = TextBox_CC
    Sheets("ActiveSheet").Range("E" & ligne) = TextBox_Appétence
    Sheets("ActiveSheet").Range("G" & ligne) = ComboBox_Spécialité
    Sheets("ActiveSheet").Range("H" & ligne) = ComboBox_Région
    Sheets("ActiveSheet").Range("I" & ligne) = TextBox_DéléguésRéférents
    
    Unload Me

End Sub
 

vgendron

XLDnaute Barbatruc
Bonjour
activehseet est déjà un objet connu de vba, tu ne peux /doit pas le redéclarer (enfin.. je crois)

n'ayant pas de fichier exemple,. je ne peux que te proposer cette correction
VB:
Private Sub Valider_Click()

' Saisie de la location dans la base de données

    Dim ligne As Integer
With ActiveSheet 'avec la feuille en cours d'affichage
   
    ligne = .[a2].End(xlDown).Row + 1
    'peut etre vaudrait il mieux partir du bas et remonter
    'ligne = .Range("A" & .Rows.Count).End(xlUp).Row + 1
   
    .Range("A" & ligne) = TextBox_Nom
    .Range("B" & ligne) = TextBox_AdresseMail
    .Range("C" & ligne) = ComboBox_Importance
    .Range("D" & ligne) = TextBox_CC
    .Range("E" & ligne) = TextBox_Appétence
    .Range("G" & ligne) = ComboBox_Spécialité
    .Range("H" & ligne) = ComboBox_Région
    .Range("I" & ligne) = TextBox_DéléguésRéférents
End With

Unload Me

End Sub
 

JeanDidouille

XLDnaute Nouveau
Merci pour vos réponses !

Un utilisateur d'un forum voisin m'a répondu et le code marche!


VB:
Private Sub Valider_Click()
Dim ligne As Integer
Dim OA As Worksheet

Set OA = ActiveSheet
ligne = OA.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1
OA.Range("A" & ligne) = TextBox_Nom
OA.Range("B" & ligne) = TextBox_AdresseMail
OA.Range("C" & ligne) = ComboBox_Importance
OA.Range("D" & ligne) = TextBox_CC
OA.Range("E" & ligne) = TextBox_Appétence
OA.Range("G" & ligne) = ComboBox_Spécialité
OA.Range("H" & ligne) = ComboBox_Région
OA.Range("I" & ligne) = TextBox_DéléguésRéférents
Unload Me
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Je passais par là
Ci-dessous une version light
(qui devrait produire le même effet que la macro du forum voisin)
VB:
Private Sub Valider_Click()
Dim ligne&, rng As Range, data_s
data_s = Array(TextBox_Nom, TextBox_AdresseMail, ComboBox_Importance, TextBox_CC, TextBox_Appétence, ComboBox_Spécialité, ComboBox_Région, TextBox_DéléguésRéférents)
ligne = ActiveSheet.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1
rng = ActiveSheet.Range("A" & ligne).Resize(, 9) = data_s
Unload Me
End Sub

NB: Pour ta gouverne, prends connaissance de ceci ;)
 

JeanDidouille

XLDnaute Nouveau
Bonjour le fil

Je passais par là
Ci-dessous une version light
(qui devrait produire le même effet que la macro du forum voisin)
VB:
Private Sub Valider_Click()
Dim ligne&, rng As Range, data_s
data_s = Array(TextBox_Nom, TextBox_AdresseMail, ComboBox_Importance, TextBox_CC, TextBox_Appétence, ComboBox_Spécialité, ComboBox_Région, TextBox_DéléguésRéférents)
ligne = ActiveSheet.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1
rng = ActiveSheet.Range("A" & ligne).Resize(, 9) = data_s
Unload Me
End Sub

NB: Pour ta gouverne, prends connaissance de ceci ;)
Merci de ta réponse :)

Oui désolé, j'éviterai la prochaine fois
 

Discussions similaires

Réponses
3
Affichages
2 K

Statistiques des forums

Discussions
311 726
Messages
2 081 955
Membres
101 852
dernier inscrit
dthi16088