Test cellule

cs_dominic67 Messages postés 6 Date d'inscription jeudi 17 février 2005 Statut Membre Dernière intervention 19 juin 2005 - 24 avril 2005 à 13:42
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 24 avril 2005 à 19:26
Bonjour

Je suis novice en Visual Basic, je cherche une fonction ou une macro me permettant de teste un groupe de cellules qui sont renseignées au fur et a mesure. Et qui lorsque celle ci sont remplies, on passe automatiquement à la ligne du dessous tout en sauvegardant le fichier, un peu comme une base de données.

Merci pour votre aide

5 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
24 avril 2005 à 17:31
Comment veux-tu que les données soient placées dans les cellules ??
A partir d'un UserForm avec TextBox, Label ou autres??
Explique un peu !

jpleroisse
0
cs_dominic67 Messages postés 6 Date d'inscription jeudi 17 février 2005 Statut Membre Dernière intervention 19 juin 2005
24 avril 2005 à 17:38
Bonjour

J'utilise justement Userform et textbox ( dont la valeur est mise dans une cellule ). La page excel est justement verouillée afin de ne pas efface les differentes infos. Le programme est concu pour une utilisation professionnelle et il y a justement des personnes qui ne maitrisent pas trop l'informatique.
Merci pour votre aide
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
24 avril 2005 à 18:14
Voici un exemple de code.
Dans cet exemple j'ai placé sur un Userform un CommandButton et 2 TextBox
txtNom et txtPrénom dont les données seront placées dans la feuil1.

Private Sub CommandButton1_Click()
Dim LigneSuivante As Long
'S'assure que la Feuil1 est sélectionnée
'Enlève la protection de la feuil1
Sheets("Feuil1").Activate
ActiveSheet.Unprotect
'détermine la ligne suivante vide
LigneSuivante = Application.WorksheetFunction.CountA(Range("A:A")) + 1
'Transfert le contenu de txtnom et txtPrénom
Cells(LigneSuivante, 1) = txtNom
Cells(LigneSuivante, 2) = txtPrénom
'vide les contrôles pour la prochaine entrée
txtNom = ""
txtPrénom = ""
txtNom.SetFocus
'Remet la protection de la feuil1
ActiveSheet.Protect
End Sub

Pour sauvegarder, soit tu sauvegarde en quittant le classeur normalement ou tu quittes à partir du UserForm. dans ce cas tu crées un Bouton "Quitter" et tu places dans le code.
soit Application.Quit ou

Private Sub cmdQuitter_Click()
Dim Classeur As WorkBook
For Each Classeur In WorkBooks
If Classeur.Name <> ThisWorkBook.Name Then
Classeur.Close saveChanges:=True
End If
Next Classeur
Classeur.Close SaveChanges:=True
End sub

jpleroisse
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
24 avril 2005 à 19:17
Tiens ce code a tester (J'ai écrit mais pas encore testé)
AddBase te permet de rajouter des valeurs à une clé un peu à la manière de setsetting
les autres fonctions vérifient l'existance de la feuille et au cas ou la crée.
tout ceci est à mettre dans un module me tenir au courant si ça bogue !!!!
Pour l'appel tu fais
addbase "IciLeNomDeTaClé" , TextBox1,"MaFeuilleDeDonnées"

Sub AddBase(Clé As String, Value As String, Optional sht As String = "xlBase")
Dim Col As Long, Row As Long
If Not (FeuilleExiste(sht)) Then CreateSheet (sht)


With Sheets(sht).Rows(1)
Col = .Find(What:=Clé, LookIn:=xlValue, lookat:=xlWhole, XlSearchDirection:=xlNext, _
MatchCase:=False, XlSearchOrder:=xlByColumns).Column
If Col = 0 Then
Col = .Find(What:="*", LookIn:=xlValue, lookat:=xlWhole, XlSearchDirection:=xlPrevious, _
MatchCase:=False, XlSearchOrder:=xlByColumns).Column
Col = Col + 1
End If
End With


With Sheets(sht).Columns(Col)
Row = .Find(What:=Value, LookIn:=xlValue, XlSearchDirection:=xlNext, XlSearchOrder:=xlByRows).Row
If Row = 0 Then
Row = .Find(What:="*", LookIn:=xlValue, XlSearchDirection:=xlPrevious, XlSearchOrder:=xlByRows).Row
Row = Row + 1
End If
End With
With Sheets(sht)
.Cells(Row, Col).Value = Clé
End With
End Sub

' Vérifie l'existance d'une feuille
Function FeuilleExiste(Nom$) As Boolean
On Error Resume Next
FeuilleExiste = Sheets(Nom).Name <> ""
Err.Clear
End Function

'CreateSheet te permet de créer un feuille soit avec ton nom soit avec un nom prédéfini dans ce cas elle est cachée

Function CreateSheet(Optional rName As String = "xlOptions") As Boolean
Dim rSheet As String
If FeuilleExiste(rName) Then Exit Function
rSheet = ActiveSheet.Name


On Error GoTo CreateSheet_Err


Worksheets.Add after:=Worksheets(Sheets.Count)
With ActiveSheet
.Name = rName If rName "xlOptions" Or rName "xlIni" Or rName = "xlBase" Then
.Range("A1").AddComment "ATTENTION CETTE FEUILLE NE DOIS PAS ETRE EFFACE !!!!!!"
.Visible = xlSheetVeryHidden
End If
End With
CreateSheet = True
Sheets(rSheet).Select
Exit Function
CreateSheet_Err:
MsgBox Err.Description, vbCritical, "Erreur de l'application"
CreateSheet = False


End Function

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
24 avril 2005 à 19:26
oups ai vu deux probs

With Sheets(sht).Columns(Col)
Row = .Find(What:=Value, LookIn:=xlValue, XlSearchDirection:=xlNext, XlSearchOrder:=xlByRows).Row
If Row = 0 Then 'Pas trouvé donc on cherche ligne vide
Row = .Find(What:="*", LookIn:=xlValue, XlSearchDirection:=xlPrevious, XlSearchOrder:=xlByRows).Row
Row = Row + 1
ElseIf Row > 0 then Exit Sub 'si trouvé on sort
End If
End With
With Sheets(sht)
.Cells(Row, Col).Value = Value
End With
End Sub

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
Rejoignez-nous