Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
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.

4 réponses

Avatar
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.
Avatar
alain Lebayle
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" a écrit dans le message de news:

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.
Avatar
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.
Avatar
alain Lebayle
Bonsoir OK,
c'est exactement cela
Très bonne soirée et encore merci beaucoup
Alain

"FdeCourt" a écrit dans le message de news:

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.