Carnet de plongée

Bonjour la communauté !

Je me régale a créer des formulaires de saisie en VBA. Je suis sur un document basique et simple mais je ne sais pas comment faire pour générer un chiffre dans l'espace "Numéro de plongée" en fonction du nom sélectionné au dessus.

Ex : Pierre a déjà réalisé 6 plongées lorsque je sélectionne Pierre pour une nouvelle saisie, on m'affiche 7.

Je crois qu'il y a une histoire de boucle ?

36classeur1.xlsm (25.61 Ko)

Salut,

La macro ci-dessous - placée dans le code du UserForm1 - devrait faire ton affaire.

Private Sub cboplongeur_Change()
    With Sheets("Recapitulatif")
        For i = .Range("B" & Rows.Count).End(xlUp).Row To 2 Step -1
            If .Range("B" & i) = cboplongeur Then
                txtnumplongée = .Range("C" & i) + 1
                GoTo Etiquette
            Else
                txtnumplongée = 1
            End If
        Next i
    End With

Etiquette:

End Sub
5riderpsy-v1.xlsm (30.63 Ko)

Salut Yvouille !

Merci pour ton aide. Je ne sais pas encore bien ou entrer les codes. La tu as saisis dans l'userform sur la cboplongeur. Ok

par contre je ne vois pas pourquoi le bouton enregistrer la plongée ne fonctionne pas comme je voudrais, c'est a dire rajouter une ligne dans mon récapitulatif.

C'est bon problème résolu, j'ai remis un peu d'ordre dans le "recapitulatif".

Pourrais tu me corriger le code sur le bouton "enregistrer la plongée", mais je pense qu'il est bon.

Je ne sais pas trop de quoi tu parles. Fournis-moi ton fichier en l'état actuel, avec mon rajout et tes dernières corrections, et explique un peu mieux ce que tu souhaites, en faisant référence aux objets Excel.

Désolé.

Est ce que ces lignes permettent d'ajouter le formulaire dans la feuille "recapitulatif" ?

Private Sub btnajout_Click()

Sheets("Recapitulatif").Activate
Range("A1").Select
Selection.End(xlDown).Select
Selection.Offset(1, 0).Select

ActiveCell = txtdate.Value
ActiveCell.Offset(0, 1).Value = cboplongeur
ActiveCell.Offset(0, 2).Value = txtnumplongée
ActiveCell.Offset(0, 3).Value = cbocatégorie
ActiveCell.Offset(0, 4).Value = cboentrainement
ActiveCell.Offset(0, 5).Value = txtdurée
ActiveCell.Offset(0, 6).Value = txtprofondeur
ActiveCell.Offset(0, 7).Value = cbopalier
ActiveCell.Offset(0, 8).Value = cbodirecteur

MsgBox " La plongée a bien été enregistré dans la base de donnée", vbOKOnly + vbInformation, "Confirmation"
End Sub
4riderpsy-v1.xlsm (37.13 Ko)

Re,

Je ne comprends pas très bien que tu me demandes si les lignes de codes fournies permettent d'ajouter les données du formulaire à ta feuille récapitulatif, puisque tu pourrais le constater toi-même en faisant un essai ! Mais oui, ton code fonctionne.

Dans le fichier ci-joint, je te propose une variante de ton code qui permet de gagner deux lignes (seulement) mais qui est éventuellement un peu plus clair, moins touffu. Il ne serait pas absolument nécessaire de sélectionner la feuille récapitulatif afin d'y ajouter ces données, ça pourrait être fait tout en restant sur l'autre feuille.

Je te propose aussi deux manières de refermer le UserForm ; soit après chaque saisie, soit par un bouton ''Annuler''.

11riderpsy-v2.xlsm (39.37 Ko)

Salut Yvouille,

Merci pour ton retour, oui j'avais fais un bouton pour fermer le formulaire avec un petit messagebox.

Rechercher des sujets similaires à "carnet plongee"