VBA transfert vers Excel à une ligne dépendant du formulaire

Bonjour,

je suis débutante sur VBA, et je me suis lancé dans la construction d'un formulaire de saisi.

Je souhaite controler l'état d'avancement des travaux comptables pour des pharmacies.

Ainsi j'ai mis dans une combobox la liste des pharmacies, mais je ne sais pas quoi faire pour que les infos à valider aillents dans la ligne de la bonne pharmacie (selectionnée dans le combobox).

Je ne sais pas si je suis claire...

Quelqu'un peut m'aider ?

Merci

Bonjour Bérengère,

Un fichier joint serait apprécié...

A+ Daniel

Voici le code que j'ai tapé.

Est ce suffisant ?

Option Explicit

Dim ws As Worksheet

Private Sub avancement_initialize()

Dim J As Long

Dim i As Integer

Set ws = Sheets("CONVERT")

With Me.Cbo_pharmacie

For J = 3 To ws.Range("D" & [D65000]).End(xlUp).Row

.AddItem ws.Range("D" & J)

Next J

End With

End Sub

Private Sub Cbo_pharmacie_Change()

Me.Cbo_pharmacie.RowSource = "CONVERT!D3:D" & Sheets("CONVERT").[D65000].End(xlUp).Row

Cbo_pharmacie.ListIndex = 1

End Sub

Private Sub CommandButton14_Click()

Unload avancement

End Sub

Private Sub CommandButton15_Click()

Dim i As Integer

Do

i = i + 1

If i > 1000 Then Exit Do

Loop Until Sheets("CONVERT").Cells(i, 4) <> "Cbo_pharmacie.Text"

If CheckBox1.Value = True Then

Range("X" & i) = TextBox1.Text

Else

Range("X" & i) = " "

End If

If CheckBox1.Value = True Then

Range("Z" & i) = TextBox1.Text

Else

Range("Z" & i) = " "

End If

If CheckBox1.Value = True Then

Range("AA" & i) = TextBox1.Text

Else

Range("AA" & i) = " "

End If

If CheckBox1.Value = True Then

Range("W" & i) = TextBox1.Text

Else

Range("W" & i) = " "

End If

If CheckBox1.Value = True Then

Range("AB" & i) = TextBox1.Text

Else

Range("AB" & i) = " "

End If

If CheckBox1.Value = True Then

Range("P" & i) = TextBox1.Text

Else

Range("P" & i) = " "

End If

If CheckBox1.Value = True Then

Range("Q" & i) = TextBox1.Text

Else

Range("Q" & i) = " "

End If

If CheckBox1.Value = True Then

Range("R" & i) = TextBox1.Text

Else

Range("R" & i) = " "

End If

If CheckBox1.Value = True Then

Range("S" & i) = TextBox1.Text

Else

Range("S" & i) = " "

End If

If CheckBox1.Value = True Then

Range("V" & i) = TextBox1.Text

Else

Range("V" & i) = " "

End If

If CheckBox1.Value = True Then

Range("U" & i) = TextBox1.Text

Else

Range("U" & i) = " "

End If

If CheckBox1.Value = True Then

Range("Y" & i) = TextBox1.Text

Else

Range("Y" & i) = " "

End If

End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If Not IsDate(Me.TextBox1) Then

MsgBox "Erreur saisie!"

Cancel = True

End If

End Sub

Voilà le dossier, j'espère que ça rendra mon problème plus clair...

Je ne sais meme pas si mon probleme estcomprehensible...

berengere a écrit :

Je souhaite controler l'état d'avancement des travaux comptables pour des pharmacies.

Ton ficher ne permet pas vraiment de comprendre quelle sorte de gestion tu veux faire, quels sont les liens entre les données, etc...

Une petite explication supplémentaire semble nécessaire (en tout cas en ce qui me concerne !!!)...

A+ Daniel

En fait, je veux contrôler que les 12TVA soient faites,, ainsi que l'ISA, la facture finale..en bref toutes les étapes. Mais ces étapes se font a différents moments de l'année. Donc en fait, je veux que la date (dans le textbox1) s'inscrive dans les cases des étapes faites... Mais il faut que ça s'inscrive bien dans la ligne de la pharmacie...

Je me doutais bien que je n'avais pas été très claire... j'espère que je suis plus compréhensible maintenant ? (tout ce qui est en gris, dans les colonnes E à O sont des infos confidentielles que j'ai surprimes avant de mettre le fichier sur le site)

Merci

Une suggestion (je n'ai pas le temps matériel de faire une maquette, mais je peux te joindre un exemple tout fait de ce que je propose ci-dessous, sur un autre sujet) :

  • mettre les deux boutons "Ajouter" et "Etat d'avancement" sur la feuille "Convert"
  • en cas d'ajout, la macro insérera la nouvelle ligne sous les entêtes de colonne (une ligne que tu connais forcément)
  • en cas de modification ou de consultation, tu charges dans le userform les données de la ligne sélectionnée
  • sur validation des modifications, tu sais où écrire (la ligne sélectionnée, toujours)...

Conseil : insére une ligne entre la 1 et la 2 de la feuille Convert te permettra d'utiliser les filtres, les tris, car ainsi Excel reconnaîtra automatiquement la liste constituée par tes données

A+ Daniel

Bonjour,

merci beaucoup pour votre réponse !

Est ce que ça veut dire que selon vous il n'y a pas de possibilité de faire exactement ce que je veux ?

Dans ce cas, je veux bien voir la maquette, comme je suis débutante je suis preneuse de tous les exemples possibles !

Merci encore

Si, si, on peut faire ce que tu veux, mais ce sera plus contraignant, surtout pour consulter et modifier, car il faudra d'abord rechercher la pharma, alors que si elle est déjà sélectionnée avant l'ouverture du UserForm, c'est toujours ça de moins à calculer, de risque d'erreurs, etc.

Attention, apparemment tu as des valeurs sur la première ligne vide en bas de la liste (qui n'est pas vraiment vide, donc...)

L'exemple dont je parlais est accessible ici :

https://www.excel-pratique.com/fr/telechargements/budget-gestion-de-comptes/budget-domestique-no193.php

Voir dans le code ce qui se passe avant l'ouverture des Userforms...

Bonne soirée ! A+ Daniel

Grand merci !

Rechercher des sujets similaires à "vba transfert ligne dependant formulaire"