Les données sur une autre feuille horizontalement avec comme variable la date

Le
alain Lebayle
Bonsoir,
J'ai des données dans une feuille de calcul qui ressemble à un formulaire
que je souhaite envoyer dans une autre feuille de calcul de manière
horizontale et ceci en fonction de la date qui se trouve dans la colonne A.
Comment dois-je m'y prendre en VBA sachant que le formulaire est remis à
zéro à chaque fois que les données sont transférées. Je butte sur la façon
d'envoyer les données sur l'autre feuille
Je vous remercie
Alain

Date Nom Adresse montant etc.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FdeCourt
Le #17462271
Bonsoir,

Je ne suis pas sur d'avoir tout compris, mais supposons une feuille
Formulaire et une feuille Data
Dans la feuille Formulaire il y a le formulaire, et dans la feuille
Data l'ensemble des données horizontalement

Lorsque des informations sont saisies dans le formulaire, supposons en
cellule A3, A5, A8, A10 alors après avoir appuyé sur un bouton, le
formulaire est mis à zéro, et les données dans les cellules A3, A5,
A8, A10 sont envoyé dans la feuille Data (sans supprimer les données
précédement ajoutées) :

Sub CreationBDD()
Dim Data(4) As String
Dim Last_LGN As Double
With Sheets("Formulaire")

Data(1) = .Cells(3, 1)
Data(2) = .Cells(5, 1)
Data(3) = .Cells(8, 1)
Data(4) = .Cells(10, 1)

.Cells(3, 1) = ""
.Cells(5, 1) = ""
.Cells(8, 1) = ""
.Cells(10, 1) = ""

End With

With Sheets("Data")
Last_LGN = .Cells(65536, 1).End(xlUp).Row + 1
.Range(.Cells(Last_LGN, 1), .Cells(Last_LGN, 4)).Value = Data
End With
End Sub

Bonne soirée

Cordialement,

F.
alain Lebayle
Le #17462391
Bonsoir F
Je te remercie pour ta célérité.
C'est exactement cela à ceci près que parfois, il y a des trous, c'est à
dire qu'il se peut qu'une cellule de la feuille formulaire ne soit pas
remplie, mais il faut que les données soit envoyées toujours sur la même
ligne, mais les données à la suite des autres suivant les jours.
J'espère être clair
Alain


"FdeCourt"
Bonsoir,

Je ne suis pas sur d'avoir tout compris, mais supposons une feuille
Formulaire et une feuille Data
Dans la feuille Formulaire il y a le formulaire, et dans la feuille
Data l'ensemble des données horizontalement

Lorsque des informations sont saisies dans le formulaire, supposons en
cellule A3, A5, A8, A10 alors après avoir appuyé sur un bouton, le
formulaire est mis à zéro, et les données dans les cellules A3, A5,
A8, A10 sont envoyé dans la feuille Data (sans supprimer les données
précédement ajoutées) :

Sub CreationBDD()
Dim Data(4) As String
Dim Last_LGN As Double
With Sheets("Formulaire")

Data(1) = .Cells(3, 1)
Data(2) = .Cells(5, 1)
Data(3) = .Cells(8, 1)
Data(4) = .Cells(10, 1)

.Cells(3, 1) = ""
.Cells(5, 1) = ""
.Cells(8, 1) = ""
.Cells(10, 1) = ""

End With

With Sheets("Data")
Last_LGN = .Cells(65536, 1).End(xlUp).Row + 1
.Range(.Cells(Last_LGN, 1), .Cells(Last_LGN, 4)).Value = Data
End With
End Sub

Bonne soirée

Cordialement,

F.
FdeCourt
Le #17462921
Euh désolé, mais non !!!!!

Dans l'exemple donné je me base sur la supposition que la 1ère cellule
est toujours renseignée.
Si ce n'est pas le cas, alors :
- Soit une autre cellule est toujours renseigné
- Soit on peux donner un numéro d'index à chaque nouvel enregistrment
- Soit une autre méthode, mais je ne me souviens plus du nom de la
propriété !!!!

Dans le deuxième cas (j'ai un peu changer la macro pour ne pas créer
de ligne si rien n'est renseigné dans le formulaire ):
Sub CreationBDD()
Dim Data(3) As String

Dim Last_LGN As Double
With Sheets("Formulaire")

Data(0) = .Cells(3, 1)
Data(1) = .Cells(5, 1)
Data(2) = .Cells(8, 1)
Data(3) = .Cells(10, 1)


.Cells(3, 1) = ""
.Cells(5, 1) = ""
.Cells(8, 1) = ""
.Cells(10, 1) = ""

End With
For x = 0 To UBound(Data)
If Len(Data(x)) = 0 Then ouch = ouch + 1
Next
If ouch - 1 = UBound(Data) Then Exit Sub

With Sheets("Data")
Last_LGN = .Cells(65536, 1).End(xlUp).Row + 1
.Range(.Cells(Last_LGN, 2), .Cells(Last_LGN, 5)).Value = Data
.Cells(Last_LGN, 1).Value = _
Application.WorksheetFunction.Max(.Range(.Cells(1,
1), .Cells(Last_LGN, 1))) + 1
End With
End Sub

Cordialement,

F.
alain Lebayle
Le #17464111
Bonsoir OK,
c'est exactement cela
Très bonne soirée et encore merci beaucoup
Alain

"FdeCourt"
Euh désolé, mais non !!!!!

Dans l'exemple donné je me base sur la supposition que la 1ère cellule
est toujours renseignée.
Si ce n'est pas le cas, alors :
- Soit une autre cellule est toujours renseigné
- Soit on peux donner un numéro d'index à chaque nouvel enregistrment
- Soit une autre méthode, mais je ne me souviens plus du nom de la
propriété !!!!

Dans le deuxième cas (j'ai un peu changer la macro pour ne pas créer
de ligne si rien n'est renseigné dans le formulaire ):
Sub CreationBDD()
Dim Data(3) As String

Dim Last_LGN As Double
With Sheets("Formulaire")

Data(0) = .Cells(3, 1)
Data(1) = .Cells(5, 1)
Data(2) = .Cells(8, 1)
Data(3) = .Cells(10, 1)


.Cells(3, 1) = ""
.Cells(5, 1) = ""
.Cells(8, 1) = ""
.Cells(10, 1) = ""

End With
For x = 0 To UBound(Data)
If Len(Data(x)) = 0 Then ouch = ouch + 1
Next
If ouch - 1 = UBound(Data) Then Exit Sub

With Sheets("Data")
Last_LGN = .Cells(65536, 1).End(xlUp).Row + 1
.Range(.Cells(Last_LGN, 2), .Cells(Last_LGN, 5)).Value = Data
.Cells(Last_LGN, 1).Value = _
Application.WorksheetFunction.Max(.Range(.Cells(1,
1), .Cells(Last_LGN, 1))) + 1
End With
End Sub

Cordialement,

F.
Publicité
Poster une réponse
Anonyme