Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

modification macro

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

meldja

XLDnaute Impliqué
bonjour,
Sur cet excellent site, on m'a fait d'excellentes macros qui fonctionnent nickel mais que je voulais modifier pour des raisons qui seraient trop longues à exposer.
Au départ, je rentrais des noms sur une ligne et les VBAistes de ce site m'ont fait des macros pour envoyer sous les noms des données via un UserForm.
Maintenant, je voudrais faire l'inverse, c'est-à-dire entrer les noms en colonne et les données de l'UserForm en ligne (en face des noms).
J'ai réussi à arranger le problème des noms, mais pas celui des données qui vont avec (à cause de la fonction de recherche pour trouver le numéro de la ligne que je ne sais pas faire).
Mon UserForm1 correspond au bouton "Enregistrer" qui se trouve dans la feuille Saisie!
Les données sont renvoyées sur 5 feuilles (SDB 4, SDB 5, SDB 6, SDB 6 bis et SDB 7) en fonction de la valeur d'une listbox.
En espérant qu'en joignant mon fichier, ça sera plus clair, merci d'avance
 

Pièces jointes

Re : modification macro

Re,
En cherchant sur le Net j'ai trouvé un code qui pourrait correspondre à mon besoin (c'est à dire trouver le numéro de ligne) :
Sub blabla
Dim L as Integer
Dim N as String
N=textboxY.value
L=Range('E4:E50').Find(N, lookat:=xlWhole).Row
End Sub

Le problème serait ensuite de récupérer le numéro trouvé pour envoyer les données dans la ligne où se trouverait le nom.
Merci d'avance
 
Re : modification macro

Bonjour Roland,
Désolé, je n'avais pas vu ta réponse. Un peu tardivement, j'entends par numéro, le numéro de ligne dans laquelle sera renvoyé les données de l'UserForm1 de la feuille "saisie" (la date, la plage horaire et le nombre d'heures).
Toutes ces données doivent être renvoyées dans la bonne feuille (qui correspond au nom du groupe : SDB PAF 4, SDB 5, SDB 6, SDB 6 bis et SDB 7).
Dans la feuille concernée, les données doivent être renvoyées en face des noms qui se trouve en colonne E des feuilles pour chaque groupe SDB. Pour que les données soient bien en face des noms (sur la même ligne), il faudrait un code qui puisse trouver le numéro de ligne correspondant au nom du stagiaire.
Ouf, compliqué à expliquer.
En espérant avoir éclairci ma demande qui n'est déjà pas facile à formuler (la réponse doit sûrement être encore plus compliquée).
En tout cas merci d'avance (j'ai vu que mon post a été pas mal consulté).
Bonne journée à tous
 
Re : modification macro

Re le forum,
Je galère. Pour test j'ai réussi à adapter sur un fichier simple, le renvoie de données en cherchant le nom dans une colonne. Pour l'instant, je l'ai fait sur une feuille et ça marche. Voici le code :

Private Sub CommandButton1_Click()
Dim Nom As String
Dim N As String
Dim F As Variant
Dim NLign As Integer
Nom = ComboBox1.Value
N = TextBox1.Value
F = TextBox2.Value
NLign = Sheets("Feuil1").Range("A2:A50").Find(Nom, lookat:=xlWhole).Row

Sheets("Feuil1").Activate
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = N
Sheets("Feuil2").Activate

Sheets("Feuil1").Activate
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = F
Sheets("Feuil2").Activate

Unload Me

End Sub

Quand j'essaie d'adapter au fichier en pièce jointe dans mon premier post, je n'y arrive pas. Voici le code bidouillé par un débutant (moi en l'occurrence) :

Dim Nom As String
Dim T As Date
Dim NFeuil As String
Dim NLign As Integer
Dim H As Variant
Dim PlageHoraire As String

Nom = TextBox2.Value
T = TextBox3.Value
NFeuil = TextBox1.Value
NLign = Sheets(NFeuil).Range("E2:E50").Find(Nom, lookat:=xlWhole).Row


Sheets("NFeuil").Activate
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = T
Sheets("Saisie").Activate

Sheets("NFeuil").Activate
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = F
Sheets("Saisie").Activate


With Sheets(NFeuil)

If Me.OptionButton1 Or Me.OptionButton2 Then
H = 2
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = H

If Me.OptionButton3 Or Me.OptionButton4 Then
H = 1.5
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = H

End If
PlageHoraire = Switch(OptionButton1, OptionButton1.Caption, OptionButton2, OptionButton2.Caption, _
OptionButton3, OptionButton3.Caption, OptionButton4, OptionButton4.Caption)
.Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Value = PlageHoraire




End If
End With
' On ferme l'USF
Unload Me
End Sub

En espérant qu'un spécialiste qui aurait un peu de temps tombera sur mon message. Merci d'avance et bonne journée
 
Re : modification macro

Re,
Ca y est, j'y suis presque, ça marche lorsque je sélectionne les 2 premiers OptionButton mais pas avec les deux seconds.
Peut être qu'il y a un problème avec les lignes en bleu :
Dim Nom As String
Dim T As Date
Dim NFeuil As String
Dim NLign As Integer
Dim H As Variant
Dim PlageHoraire As String

Nom = TextBox2.Value
D = TextBox3.Value
NFeuil = TextBox1.Value
NLign = Sheets(NFeuil).Range("E2:E50").Find(Nom, lookat:=xlWhole).Row


Sheets(NFeuil).Activate
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = D
Sheets("Saisie").Activate

Sheets(NFeuil).Activate
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = F
Sheets("Saisie").Activate


PlageHoraire = Switch(OptionButton1, OptionButton1.Caption, OptionButton2, OptionButton2.Caption, _
OptionButton3, OptionButton3.Caption, OptionButton4, OptionButton4.Caption)
Sheets(NFeuil).Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Value = PlageHoraire

If Me.OptionButton1 Or Me.OptionButton2 Then
H = 2
Sheets(NFeuil).Activate
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = H
Sheets("Saisie").Activate


ElseIf Me.OptionButton3 Or Me.OptionButton4 Then
H = 1.5
Sheets(NFeuil).Activate
Range("iv" & NLign).End(xlToLeft).Offset(0, 1).Select
Selection = H
Sheets("Saisie").Activate

End If

' On ferme l'USF
Unload Me
End Sub

Merci, si quelqu'un est près à se pencher sur mon problème.
S'il le faut, je peux envoyer mon fichier bidouillé (certainement à la barbare pour les spécialistes VBA)
 
Re : modification macro

Re,
J'ai l'impression de me parler à moi-même, c'est la vieillesse qui commence...
Désolé d'inonder le forum. Juste pour dire que c'est bon, finalement, ça marche comme je veux. J'aurais eu le mérite de m'être débrouillé par moi-même. Toutefois, j'aurais aimer qu'un spécialiste jette un coup d'oeil et me fasse des proposition avec un code plus orthodoxe.
Merci d'avance.
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…