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

Création d'une ligne dans une BDD à la façon Access

5 réponses
Avatar
Humanum
Bonjour,

Voici un code effectué par enregistrement et petit nettoyage manuel qui me
permet d'insérer une ligne dans une base de donnée, de recopier celle du
dessus, vider les données inutiles et conserver formules et format (MFC,
validation).
Enfin créer un nouvel enregistrement...

Private Sub CommandButton1_Click()

Selection.AutoFilter Field:=3, Criteria1:="=Centromaskin*", Operator:= _
xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").Select
Selection.EntireColumn.Hidden = False
Range("A3").Select
Rows("8:8").Select
Selection.Insert Shift:=xlDown
Selection.FillDown
Range("C8:Q8").Select
Selection.ClearContents
Range("R8").Select
ActiveCell.FormulaR1C1 = "D"
Range("S8:V8").Select
Selection.ClearContents
Range("X8").Select
Selection.ClearContents
Range("Y8").FormulaLocal = "=MAINTENANT()"
Range("Y8").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("Z8:AB8").Select
Selection.ClearContents
Range("C8").Select
End Sub

Objectifs:
1) je crée la ligne en 8 car la première de ma BDD est en 7 et la ligne 6 le
nom des champs. Comment puis-je obtenir le même résultat en positionnant ce
nouvel enregistrement en ligne 7?

2) en Y8 je mets la formule "MAINTENANT" pour conserver la date et l'heure
de la création puis je copie et colle les valeurs pour que la cellule ne
soit pas dynamique. Cela fonctionne mais n'y a t-il pas un code VBA plus
subtil?

Enfin pour finir, non je ne souhaite pas utiliser Access pour faire plus
simple! (sourire)


Merci d'avance,
Jérôme

5 réponses

Avatar
isabelle
bonjour Jérôme,

Private Sub CommandButton1_Click()
'sur la prochaine ligne il vaut peut être mieux remplacer "Selection" par Range("C8")
Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*", Operator:=xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").EntireColumn.Hidden = False
Rows("8:8").Insert Shift:=xlDown
Rows("7:8").FillDown
Union(Range("C8:Q8"), Range("S8:V8"), Range("Z8:AB8"), Range("X8")).ClearContents
Range("R8") = "D"
Range("Y8").FormulaLocal = Now
End Sub

isabelle

Bonjour,

Voici un code effectué par enregistrement et petit nettoyage manuel qui me
permet d'insérer une ligne dans une base de donnée, de recopier celle du
dessus, vider les données inutiles et conserver formules et format (MFC,
validation).
Enfin créer un nouvel enregistrement...

Private Sub CommandButton1_Click()

Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*", Operator:= _
xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").Select
Selection.EntireColumn.Hidden = False
Range("A3").Select
Rows("8:8").Select
Selection.Insert Shift:=xlDown
Selection.FillDown
Range("C8:Q8").Select
Selection.ClearContents
Range("R8").Select
ActiveCell.FormulaR1C1 = "D"
Range("S8:V8").Select
Selection.ClearContents
Range("X8").Select
Selection.ClearContents
Range("Y8").FormulaLocal = "=MAINTENANT()"
Range("Y8").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("Z8:AB8").Select
Selection.ClearContents
Range("C8").Select
End Sub

Objectifs:
1) je crée la ligne en 8 car la première de ma BDD est en 7 et la ligne 6 le
nom des champs. Comment puis-je obtenir le même résultat en positionnant ce
nouvel enregistrement en ligne 7?

2) en Y8 je mets la formule "MAINTENANT" pour conserver la date et l'heure
de la création puis je copie et colle les valeurs pour que la cellule ne
soit pas dynamique. Cela fonctionne mais n'y a t-il pas un code VBA plus
subtil?

Enfin pour finir, non je ne souhaite pas utiliser Access pour faire plus
simple! (sourire)


Merci d'avance,
Jérôme





Avatar
isabelle
bonjour Jérôme,

Private Sub CommandButton1_Click()
'sur la prochaine ligne il vaut peut être mieux remplacer "Selection" par Range("C8")
Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*", Operator:=xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").EntireColumn.Hidden = False
Rows("8:8").Insert Shift:=xlDown
Rows("7:8").FillDown
Union(Range("C8:Q8"), Range("S8:V8"), Range("Z8:AB8"), Range("X8")).ClearContents
Range("R8") = "D"
Range("Y8") = Now
End Sub

isabelle

Bonjour,

Voici un code effectué par enregistrement et petit nettoyage manuel qui me
permet d'insérer une ligne dans une base de donnée, de recopier celle du
dessus, vider les données inutiles et conserver formules et format (MFC,
validation).
Enfin créer un nouvel enregistrement...

Private Sub CommandButton1_Click()

Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*", Operator:= _
xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").Select
Selection.EntireColumn.Hidden = False
Range("A3").Select
Rows("8:8").Select
Selection.Insert Shift:=xlDown
Selection.FillDown
Range("C8:Q8").Select
Selection.ClearContents
Range("R8").Select
ActiveCell.FormulaR1C1 = "D"
Range("S8:V8").Select
Selection.ClearContents
Range("X8").Select
Selection.ClearContents
Range("Y8").FormulaLocal = "=MAINTENANT()"
Range("Y8").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("Z8:AB8").Select
Selection.ClearContents
Range("C8").Select
End Sub

Objectifs:
1) je crée la ligne en 8 car la première de ma BDD est en 7 et la ligne 6 le
nom des champs. Comment puis-je obtenir le même résultat en positionnant ce
nouvel enregistrement en ligne 7?

2) en Y8 je mets la formule "MAINTENANT" pour conserver la date et l'heure
de la création puis je copie et colle les valeurs pour que la cellule ne
soit pas dynamique. Cela fonctionne mais n'y a t-il pas un code VBA plus
subtil?

Enfin pour finir, non je ne souhaite pas utiliser Access pour faire plus
simple! (sourire)


Merci d'avance,
Jérôme





Avatar
Humanum
Voilà qui fonctionne tres bien!
J'ai donc appris les fonctions Union et Now. Merci!

"isabelle" a écrit dans le message de news:
%
bonjour Jérôme,

Private Sub CommandButton1_Click()
'sur la prochaine ligne il vaut peut être mieux remplacer "Selection" par
Range("C8")
Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*",
Operator:=xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").EntireColumn.Hidden = False
Rows("8:8").Insert Shift:=xlDown
Rows("7:8").FillDown
Union(Range("C8:Q8"), Range("S8:V8"), Range("Z8:AB8"),
Range("X8")).ClearContents
Range("R8") = "D"
Range("Y8") = Now
End Sub

isabelle

Bonjour,

Voici un code effectué par enregistrement et petit nettoyage manuel qui
me permet d'insérer une ligne dans une base de donnée, de recopier celle
du dessus, vider les données inutiles et conserver formules et format
(MFC, validation).
Enfin créer un nouvel enregistrement...

Private Sub CommandButton1_Click()

Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*",
Operator:= _
xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").Select
Selection.EntireColumn.Hidden = False
Range("A3").Select
Rows("8:8").Select
Selection.Insert Shift:=xlDown
Selection.FillDown
Range("C8:Q8").Select
Selection.ClearContents
Range("R8").Select
ActiveCell.FormulaR1C1 = "D"
Range("S8:V8").Select
Selection.ClearContents
Range("X8").Select
Selection.ClearContents
Range("Y8").FormulaLocal = "=MAINTENANT()"
Range("Y8").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("Z8:AB8").Select
Selection.ClearContents
Range("C8").Select
End Sub

Objectifs:
1) je crée la ligne en 8 car la première de ma BDD est en 7 et la ligne 6
le nom des champs. Comment puis-je obtenir le même résultat en
positionnant ce nouvel enregistrement en ligne 7?

2) en Y8 je mets la formule "MAINTENANT" pour conserver la date et
l'heure de la création puis je copie et colle les valeurs pour que la
cellule ne soit pas dynamique. Cela fonctionne mais n'y a t-il pas un
code VBA plus subtil?

Enfin pour finir, non je ne souhaite pas utiliser Access pour faire plus
simple! (sourire)


Merci d'avance,
Jérôme






Avatar
JB
Bonjour,

Union n'est pas nécessaire:

Range("C8:Q8,S8:V8,Z8:AB8,X8").ClearContents

JB
http://boisgontierjacques.free.fr

On 13 fév, 23:15, "Humanum" wrote:
Voilà qui fonctionne tres bien!
J'ai donc appris les fonctions Union et Now. Merci!

"isabelle" a écrit dans le message de news:
%



bonjour Jérôme,

Private Sub CommandButton1_Click()
'sur la prochaine ligne il vaut peut être mieux remplacer "Selection" par
Range("C8")
    Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*" ,
Operator:=xlAnd
    ActiveSheet.ShowAllData
    Columns("A:AZ").EntireColumn.Hidden = False
    Rows("8:8").Insert Shift:=xlDown
    Rows("7:8").FillDown
    Union(Range("C8:Q8"), Range("S8:V8"), Range("Z8:AB8"),
Range("X8")).ClearContents
    Range("R8") = "D"
    Range("Y8") = Now
End Sub

isabelle

Bonjour,

Voici un code effectué par enregistrement et petit nettoyage manuel q ui
me permet d'insérer une ligne dans une base de donnée, de recopier celle
du dessus, vider les données inutiles et conserver formules et format
(MFC, validation).
Enfin créer un nouvel enregistrement...

Private Sub CommandButton1_Click()

    Selection.AutoFilter Field:=3, Criteria1:="Întromaskin* ",
Operator:= _
        xlAnd
    ActiveSheet.ShowAllData
    Columns("A:AZ").Select
    Selection.EntireColumn.Hidden = False
    Range("A3").Select
    Rows("8:8").Select
    Selection.Insert Shift:=xlDown
    Selection.FillDown
    Range("C8:Q8").Select
    Selection.ClearContents
    Range("R8").Select
    ActiveCell.FormulaR1C1 = "D"
    Range("S8:V8").Select
    Selection.ClearContents
    Range("X8").Select
    Selection.ClearContents
    Range("Y8").FormulaLocal = "=MAINTENANT()"
    Range("Y8").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlN one,
SkipBlanks _
        :úlse, Transpose:úlse
    Range("Z8:AB8").Select
    Selection.ClearContents
    Range("C8").Select
End Sub

Objectifs:
1) je crée la ligne en 8 car la première de ma BDD est en 7 et la l igne 6
le nom des champs. Comment puis-je obtenir le même résultat en
positionnant ce nouvel enregistrement en ligne 7?

2) en Y8 je mets la formule "MAINTENANT" pour conserver la date et
l'heure de la création puis je copie et colle les valeurs pour que la
cellule ne soit pas dynamique. Cela fonctionne mais n'y a t-il pas un
code VBA plus subtil?

Enfin pour finir, non je ne souhaite pas utiliser Access pour faire plu s
simple! (sourire)

Merci d'avance,
Jérôme- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -




Avatar
Humanum
merci pour la nouvelle syntaxe

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

Bonjour,

Union n'est pas nécessaire:

Range("C8:Q8,S8:V8,Z8:AB8,X8").ClearContents

JB
http://boisgontierjacques.free.fr

On 13 fév, 23:15, "Humanum" wrote:
Voilà qui fonctionne tres bien!
J'ai donc appris les fonctions Union et Now. Merci!

"isabelle" a écrit dans le message de news:
%



bonjour Jérôme,

Private Sub CommandButton1_Click()
'sur la prochaine ligne il vaut peut être mieux remplacer "Selection"
par
Range("C8")
Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*",
Operator:=xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").EntireColumn.Hidden = False
Rows("8:8").Insert Shift:=xlDown
Rows("7:8").FillDown
Union(Range("C8:Q8"), Range("S8:V8"), Range("Z8:AB8"),
Range("X8")).ClearContents
Range("R8") = "D"
Range("Y8") = Now
End Sub

isabelle

Bonjour,

Voici un code effectué par enregistrement et petit nettoyage manuel qui
me permet d'insérer une ligne dans une base de donnée, de recopier
celle
du dessus, vider les données inutiles et conserver formules et format
(MFC, validation).
Enfin créer un nouvel enregistrement...

Private Sub CommandButton1_Click()

Selection.AutoFilter Field:=3, Criteria1:="Întromaskin*",
Operator:= _
xlAnd
ActiveSheet.ShowAllData
Columns("A:AZ").Select
Selection.EntireColumn.Hidden = False
Range("A3").Select
Rows("8:8").Select
Selection.Insert Shift:=xlDown
Selection.FillDown
Range("C8:Q8").Select
Selection.ClearContents
Range("R8").Select
ActiveCell.FormulaR1C1 = "D"
Range("S8:V8").Select
Selection.ClearContents
Range("X8").Select
Selection.ClearContents
Range("Y8").FormulaLocal = "=MAINTENANT()"
Range("Y8").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:úlse, Transpose:úlse
Range("Z8:AB8").Select
Selection.ClearContents
Range("C8").Select
End Sub

Objectifs:
1) je crée la ligne en 8 car la première de ma BDD est en 7 et la ligne
6
le nom des champs. Comment puis-je obtenir le même résultat en
positionnant ce nouvel enregistrement en ligne 7?

2) en Y8 je mets la formule "MAINTENANT" pour conserver la date et
l'heure de la création puis je copie et colle les valeurs pour que la
cellule ne soit pas dynamique. Cela fonctionne mais n'y a t-il pas un
code VBA plus subtil?

Enfin pour finir, non je ne souhaite pas utiliser Access pour faire
plus
simple! (sourire)

Merci d'avance,
Jérôme- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -