Code VBA sur formulaire Excel

Bonjour,

j'ai un problème de rapatriement de donnée dans la base,j'ai un formulaire comportant 13 lignes,ces 13 lignes ne seront pas forcément toutes saisies lors de l'utilisation du formulaire,je peux par exemple avoir des données en ligne 1 et des données en ligne 4,je souhaiterais que ces données aillent se placer dans la feuille IH les une en dessous des autres sans saut de lignes,hors actuellement les données de la ligne 1 s'intègrent bien dans la 1ère ligne vide mais celle de la ligne 4 s'intègrent 4 lignes en dessous

Merci pour votre aide

Bonjour,

c'est normal ; vous répétez le même code pour toutes vos combobox ( quelles soient vides ou non )

dlg = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Cells(dlg, 1) = Date
.Cells(dlg, 2) = CboNomS2.Value
.Cells(dlg, 3) = txtLotS2.Value
.Cells(dlg, 4) = txtPerimeS2.Value
.Cells(dlg, 5) = CboNomUtilisation2.Value
.Cells(dlg, 6) = txtS2.Value
.Cells(dlg, 7) = txtOperateurS2.Value

Donc vide ou non excel ira au minimum indiquer la date en colonne A et ainsi pour le code suivant End(xlUp).Row + 1 ne fonctionnera plus.

Vous devez tester d'abord si une selection a été effectuer sur la combobox avant d'effectuer vos "Range" value.

Exemple pour le premier ( à répéter sur les suivants :)

If   CboNomS1.listindex <> 0 Then
dlg = .Range("A" & Rows.Count).End(xlUp).Row + 1
   .Cells(dlg, 1) = Date
   .Cells(dlg, 2) = CboNomS1.Value
   .Cells(dlg, 3) = txtLotS1.Value
   .Cells(dlg, 4) = txtPerimeS1.Value
   .Cells(dlg, 5) = CboNomUtilisation1.Value
   .Cells(dlg, 6) = txtS1.Value
   .Cells(dlg, 7) = txtOperateurS1.Value
End if

Bonjour le fil, bonjour le forum,

Remplace le code du bouton Valider par ce lui-ci (non testé) :

Private Sub btnValideS_Click()
Dim dlg As Integer
Dim CTRL As Control
Dim Num As Byte

For Each CTRL In Me.MultiPage1(0).Controls
    If Left(CTRL.Name, 7) = "CboNomS" Then
        If CTRL.Value <> "" Then
            Num = CByte(Mid(CTRL.Name, 8))
            dlg = Sheets("IH").Range("A" & Rows.Count).End(xlUp).Row + 1
            .Cells(dlg, 1) = Date
            .Cells(dlg, 2) = Me.Controls("CboNomS" & Num).Value
            .Cells(dlg, 3) = Me.Controls("txtLotS" & Num).Value
            .Cells(dlg, 4) = Me.Controls("txtPerimeS" & Num).Value
            .Cells(dlg, 5) = Me.Controls("CboNomUtilisation" & Num).Value
            .Cells(dlg, 6) = Me.Controls("txtS" & Num).Value
            .Cells(dlg, 7) = Me.Controls("txtOperateurS" & Num).Value
        End If
    End If
Next CTRL
End Sub

Bonjour,

merci pour vos réponses, hélas aucune des solutions ne fonctionnent, j'ai des message d'erreur de compilation et comme je n'y connais rien je ne suis pas en mesure de faire des corrections éventuelle.

Merci pour votre aide

Bonne journée

Le problème c'est que votre fichier actuel ne fonctionne pas chez moi. je ne peux donc pas tester d'autres lignes de code.

Plantage à l'ouverture puis quand le userform est ouvert impossible d'utiliser le bouton "validation" reste grisé sans action possible.

Bonjour Xmenpl,

pour activer le bouton valide il faut compléter la case opérateur de la 1ère ligne

Ok Vu

Génial,ça fonctionne parfaitement!

Merci

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier modifié et testé. J'ai mis à jour l'ordre des tabulations des contrôles et corrigé le premier code du bouton Valider.Il simplifie énormément l'écriture du code.

8sylvie-ep-v01.xlsm (144.81 Ko)

Merci ThauThème, ça fonctionne très bien

bonne journée et encore merci pour votre aide

@ThauThème,

encours de route j'ai modifié mon formulaire j'ai supprimé toutes les cases opérateurs sauf celle de la 1ere ligne,du coup lorsque je clique sur valider j'ai un message d'erreur

image image

merci

Re,

Je me doutais bien que l'opérateur était toujours le même... Je regarde ça...

Re,

En pièce jointe la version 02 :

6sylvie-ep-v02.xlsm (145.71 Ko)

ça fonctionne, j'ai commencé a copier le code pour le 2ème onglet, j'ai du faire une erreur quelque part car lorsque je valide ma feuille sang (page 1),au lieu de réafficher la même feuille il affiche la page 2 et je souhaiterais qu'il réaffiche la même page après validation.

Encore merci pour ton aide

Re,

Je ne comprends pas. Je ne vois aucun code pour le bouton Valider de la page Autres. Toutefois à la fin du code du bouton Valider il te suffit de rajouter la ligne :

Unload Me
frmStock.MultiPage1.Value = 0 '<===== ici
frmStock.Show

0 indique la page Prélèvements Sanguins, 1 indique la page Autres (les pages sont numérotées de 0 à nombre de page -1). Tu adapteras selon tes besoins...

Bonjour,

Merci encore pour ton aide,ça fonctionne

bonne journée

re,

rectificatif j'ai un souci, les données de la page autres ne s'intègrent pas dans la feuilles données,tout le reste fonctionne.

Merci d'avance.

Rechercher des sujets similaires à "code vba formulaire"