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

Ajouter une ligne en dur...

8 réponses
Avatar
Sunburn
Bonjour,
j'ai la macro suivante.
je voudrais ajouter en vba, sur la ligne 1, le titre de mes 12 colonnes, et
ensuite effctuer ma macro.
Par contre, je suis sensé exécuter cette macro plusieurs fois. Je veux donc
juste ma ligne 1 en dur, pour ne pas qu'elle se répète.
Merci
Yann
-----
Sub FCP()
pw = InputBox("Entrer le mot de passe")
If pw = "mdp" Then
Dim ok As Boolean
For k = 1 To Sheets.Count
If Sheets(k).Name = "Info" Then GoTo saute
If Sheets(k).Name = "Formation" Then GoTo saute
For Each c In Sheets(k).[E8:E38]
If c.Value = "EXP" Then ok = True
If c.Value = "CAC" Then ok = True
If c.Value = "FI" Then ok = True
If c.Value = "FC" Then ok = True
If ok = True Then
ok = False
lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
Else
If Sheets("Formation").Range("D" & lig) < Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Delete
End If
End If
Sheets("Formation").Range("A" & lig) = Sheets("Info").[C10]
Sheets("Formation").Range("B" & lig) = Sheets("Info").[C11]
Sheets("Formation").Range("C" & lig) = c.Value
Sheets("Formation").Range("D" & lig) = Sheets(k).Range("B" & c.Row)
Sheets("Formation").Range("E" & lig) = Sheets(k).Range("J" & c.Row)
Sheets("Formation").Range("F" & lig) = Sheets(k).Range("L" & c.Row)
End If
Next
saute:
Next
calc
Sheets("Formation").Columns("I:I").NumberFormat = "# ##0.00"
Sheets("Formation").Columns("D:D").NumberFormat = "dd/mm/yy"
Sheets("Formation").Columns("A:L").AutoFit
Else
MsgBox ("Désolé"), vbCritical, "Mauvais mot de passe"
End If
End Sub
-----

8 réponses

Avatar
isabelle
bonjour Yann,

tu pourrais ajouter quelque chose comme ça,

tt = Array("Titre1", "Titre2", "Titre3", "Titre4", "Titre5", "Titre6", "Titre7", "Titre8", "Titre9", "Titre10", "Titre11", "Titre12")
For i = 1 To 12
If Cells(1, i) = "" Then Cells(1, i) = Application.Index(tt, i)
Next


isabelle

Bonjour,
j'ai la macro suivante.
je voudrais ajouter en vba, sur la ligne 1, le titre de mes 12 colonnes, et
ensuite effctuer ma macro.
Par contre, je suis sensé exécuter cette macro plusieurs fois. Je veux donc
juste ma ligne 1 en dur, pour ne pas qu'elle se répète.
Merci
Yann
-----
Sub FCP()
pw = InputBox("Entrer le mot de passe")
If pw = "mdp" Then
Dim ok As Boolean
For k = 1 To Sheets.Count
If Sheets(k).Name = "Info" Then GoTo saute
If Sheets(k).Name = "Formation" Then GoTo saute
For Each c In Sheets(k).[E8:E38]
If c.Value = "EXP" Then ok = True
If c.Value = "CAC" Then ok = True
If c.Value = "FI" Then ok = True
If c.Value = "FC" Then ok = True
If ok = True Then
ok = False
lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
Else
If Sheets("Formation").Range("D" & lig) < Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Delete
End If
End If
Sheets("Formation").Range("A" & lig) = Sheets("Info").[C10]
Sheets("Formation").Range("B" & lig) = Sheets("Info").[C11]
Sheets("Formation").Range("C" & lig) = c.Value
Sheets("Formation").Range("D" & lig) = Sheets(k).Range("B" & c.Row)
Sheets("Formation").Range("E" & lig) = Sheets(k).Range("J" & c.Row)
Sheets("Formation").Range("F" & lig) = Sheets(k).Range("L" & c.Row)
End If
Next
saute:
Next
calc
Sheets("Formation").Columns("I:I").NumberFormat = "# ##0.00"
Sheets("Formation").Columns("D:D").NumberFormat = "dd/mm/yy"
Sheets("Formation").Columns("A:L").AutoFit
Else
MsgBox ("Désolé"), vbCritical, "Mauvais mot de passe"
End If
End Sub
-----


Avatar
Sunburn
Bonjour Isa,
en fait ça me marque bien mes différent libellés.
Mais par contre, ça ne reste pas sur la ligne 1, cette ligne de libellés
vient de mettre après mes autres valeurs. Pourquoi?
merci.
Yann
Avatar
isabelle
rebonjour Yann,

dans ta macro tu insere une ligne à partir de la ligne 1
alors c'est normal.

lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
Else
If Sheets("Formation").Range("D" & lig) < Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Delete
End If
End If


Bonjour Isa,
en fait ça me marque bien mes différent libellés.
Mais par contre, ça ne reste pas sur la ligne 1, cette ligne de libellés
vient de mettre après mes autres valeurs. Pourquoi?
merci.
Yann


Avatar
Sunburn
Re,
oui, mais comment lui dire de n'insérer une ligne qu'à partir de la ligne 2?
merci.
Yann


rebonjour Yann,

dans ta macro tu insere une ligne à partir de la ligne 1
alors c'est normal.

lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
Else
If Sheets("Formation").Range("D" & lig) < Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Delete
End If
End If


Bonjour Isa,
en fait ça me marque bien mes différent libellés.
Mais par contre, ça ne reste pas sur la ligne 1, cette ligne de libellés
vient de mettre après mes autres valeurs. Pourquoi?
merci.
Yann





Avatar
isabelle
ajoute cette commande lig = 1 avant le début de la boucle
durant l'exécution, à la commande lig = lig + 1
lig sera = 2

isabelle


Re,
oui, mais comment lui dire de n'insérer une ligne qu'à partir de la ligne 2?
merci.
Yann



rebonjour Yann,

dans ta macro tu insere une ligne à partir de la ligne 1
alors c'est normal.

lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
Else
If Sheets("Formation").Range("D" & lig) < Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Delete
End If
End If



Bonjour Isa,
en fait ça me marque bien mes différent libellés.
Mais par contre, ça ne reste pas sur la ligne 1, cette ligne de libellés
vient de mettre après mes autres valeurs. Pourquoi?
merci.
Yann







Avatar
Jacky
Bonjour,
Ou se trouve la ligne de titre à mette sur chaque feuille ???
Démarrage de la macro
Lig=2
ligne 1 de la feuille en cours = les titres
'----
'----
Lig=lig+1
--
Salutations
JJ

"Sunburn" a écrit dans le message de
news:
Re,
oui, mais comment lui dire de n'insérer une ligne qu'à partir de la ligne
2?
merci.
Yann


rebonjour Yann,

dans ta macro tu insere une ligne à partir de la ligne 1
alors c'est normal.

lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row)
Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
Else
If Sheets("Formation").Range("D" & lig) < Sheets(k).Range("B" & c.Row)
Then
Sheets("Formation").Rows(lig).Delete
End If
End If


Bonjour Isa,
en fait ça me marque bien mes différent libellés.
Mais par contre, ça ne reste pas sur la ligne 1, cette ligne de
libellés
vient de mettre après mes autres valeurs. Pourquoi?
merci.
Yann







Avatar
Sunburn
Ok, merci à tous les 2, ça marche.
ma procédure bug encore sur un petit point.
En effet, si je ne suis pas sur la bonne feuille, il ne fera pas les calculs.
Comment lui dire d'effectuer toute cette macro sur la feuille "Formation",
même si celle-ci est cachée?
Merci.
Yann


ajoute cette commande lig = 1 avant le début de la boucle
durant l'exécution, à la commande lig = lig + 1
lig sera = 2

isabelle


Re,
oui, mais comment lui dire de n'insérer une ligne qu'à partir de la ligne 2?
merci.
Yann



rebonjour Yann,

dans ta macro tu insere une ligne à partir de la ligne 1
alors c'est normal.

lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
Else
If Sheets("Formation").Range("D" & lig) < Sheets(k).Range("B" & c.Row) Then
Sheets("Formation").Rows(lig).Delete
End If
End If



Bonjour Isa,
en fait ça me marque bien mes différent libellés.
Mais par contre, ça ne reste pas sur la ligne 1, cette ligne de libellés
vient de mettre après mes autres valeurs. Pourquoi?
merci.
Yann










Avatar
Sunburn
Ok, merci à tous les 2, ça marche.
ma procédure bug encore sur un petit point.
En effet, si je ne suis pas sur la bonne feuille, il ne fera pas les calculs.
Comment lui dire d'effectuer toute cette macro sur la feuille "Formation",
même si celle-ci est cachée?
Merci.
Yann


Bonjour,
Ou se trouve la ligne de titre à mette sur chaque feuille ???
Démarrage de la macro
Lig=2
ligne 1 de la feuille en cours = les titres
'----
'----
Lig=lig+1
--
Salutations
JJ

"Sunburn" a écrit dans le message de
news:
Re,
oui, mais comment lui dire de n'insérer une ligne qu'à partir de la ligne
2?
merci.
Yann


rebonjour Yann,

dans ta macro tu insere une ligne à partir de la ligne 1
alors c'est normal.

lig = lig + 1
If Sheets("Formation").Range("D" & lig) > Sheets(k).Range("B" & c.Row)
Then
Sheets("Formation").Rows(lig).Insert Shift:=xlDown
Else
If Sheets("Formation").Range("D" & lig) < Sheets(k).Range("B" & c.Row)
Then
Sheets("Formation").Rows(lig).Delete
End If
End If


Bonjour Isa,
en fait ça me marque bien mes différent libellés.
Mais par contre, ça ne reste pas sur la ligne 1, cette ligne de
libellés
vient de mettre après mes autres valeurs. Pourquoi?
merci.
Yann