Modifier sur deux feuilles
Bonjour,
Il neige à Marseille, c'est un grand événement qui a du certainement me geler mes neurones.
Je n'arrive pas a faire la bonne formule pour pouvoir modifier des lignes sur deux feuilles différentes.
Voici ce que j'ai fais :
Dim no_Ligne As Integer
no_Ligne = Sheets("BASE").Range("A65536").End(xlUp).Row
Sheets("BASE").Range(no_Ligne & "A").Value = TextBox2
Sheets("BASE").Range(no_Ligne & "B").Value = TextBox3
Sheets("BASE").Range(no_Ligne & "C").Value = TextBox4
Sheets("BASE").Range(no_Ligne & "D").Value = TextBox5
Sheets("BASE").Range(no_Ligne & "E").Value = TextBox6
Sheets("BASE").Range(no_Ligne & "F").Value = TextBox7
Sheets("BASE").Range(no_Ligne & "G").Value = TextBox8
Sheets("BASE").Range(no_Ligne & "H").Value = TextBox9
Sheets("BASE").Range(no_Ligne & "I").Value = TextBox10
Sheets("BASE").Range(no_Ligne & "J").Value = TextBox11
Sheets("BASE").Range(no_Ligne & "K").Value = ComboBox1
Sheets("BASE").Range(no_Ligne & "L").Value = ComboBox2
Sheets("BASE").Range(no_Ligne & "M").Value = TextBox12
Sheets("BASE").Range(no_Ligne & "N").Value = TextBox13
Sheets("BASE").Range(no_Ligne & "O").Value = TextBox14
Sheets("BASE").Range(no_Ligne & "P").Value = TextBox15
no_Ligne = Sheets("SYNTHESE").Range("A50").End(xlUp).Row
Sheets("SYNTHESE").Range(no_Ligne & "A").Value = TextBox2
Sheets("SYNTHESE").Range(no_Ligne & "B").Value = TextBox3
Sheets("SYNTHESE").Range(no_Ligne & "C").Value = ComboBox1
Sheets("SYNTHESE").Range(no_Ligne & "D").Value = ComboBox2
Sheets("SYNTHESE").Range(no_Ligne & "E").Value = TextBox10
Sheets("SYNTHESE").Range(no_Ligne & "F").Value = TextBox11
Sheets("SYNTHESE").Range(no_Ligne & "G").Value = TextBox8
Sheets("SYNTHESE").Range(no_Ligne & "H").Value = TextBox9
Sheets("SYNTHESE").Range(no_Ligne & "I").Value = TextBox12
Sheets("SYNTHESE").Range(no_Ligne & "J").Value = TextBox12
Sheets("SYNTHESE").Range(no_Ligne & "K").Value = TextBox16
Sheets("SYNTHESE").Range(no_Ligne & "L").Value = TextBox17
Sheets("SYNTHESE").Range(no_Ligne & "M").Value = TextBox18
Sheets("SYNTHESE").Range(no_Ligne & "N").Value = TextBox19
Sheets("SYNTHESE").Range(no_Ligne & "O").Value = TextBox20
Sheets("SYNTHESE").Range(no_Ligne & "P").Value = TextBox21
Sheets("SYNTHESE").Range(no_Ligne & "Q").Value = TextBox22
Sheets("SYNTHESE").Range(no_Ligne & "R").Value = TextBox23
Sheets("SYNTHESE").Range(no_Ligne & "S").Value = TextBox24
Sheets("SYNTHESE").Range(no_Ligne & "T").Value = TextBox25
Sheets("SYNTHESE").Range(no_Ligne & "U").Value = TextBox26
Sheets("SYNTHESE").Range(no_Ligne & "V").Value = TextBox27
Sheets("SYNTHESE").Range(no_Ligne & "W").Value = TextBox28
Sheets("SYNTHESE").Range(no_Ligne & "X").Value = TextBox29
Sheets("SYNTHESE").Range(no_Ligne & "Y").Value = TextBox30Besoin de conseil afin de comprendre ce qui ne va pas.
Je vous remercie de par avance de l'aide que vous voudrez bien m'apporter.
Bonjour Sandrine,
A priori ... tu ne te simplifies la vie ...
En définisant deux variables ... et avec deux boucles ... le tout ne devrait prendre que quelques lignes ...
Bonjour James,
Une variable avec i ?
Bonjour,
Bonjour James007,
Avant tout, il n'y aurait pas une petite erreur généralisée sur l'ensemble de ton code que tu nous présentes ?
Sheets("BASE").Range(no_Ligne & "A").Value = TextBox2devrait être
Sheets("BASE").Range("A" & no_Ligne).Value = TextBox2Me trompe je ?
Bon, je vais prendre mon café...
Cdlt.
Salut Jean-Eric ...
Non ... bien sûr ... tu ne trompes pas ... comme d'hab ...
@ Sandrine ...
Comme point de départ ... la structure logique à peaufiner ... en fonction des contrôles du UserForm ...
Sub TestSandrine()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim j As Long
Dim no_Ligne As Integer
Set ws1 = Sheets("BASE")
Set ws2 = Sheets("SYNTHESE")
no_Ligne = ws1.Range("A65536").End(xlUp).Row
' Boucle pour ta première feuille
For j = 1 To 16
' exemple pour expliquer la logique --- à adapter
' puisque tous les contrôles ne sont pas des TextBoxes
ws1.Cells(no_Ligne, j) = UserForm1.Controls("TextBox" & j).Value
Next j
' Boucle pour ta seconde feuille
For j = 1 To 26
' exemple pour expliquer la logique --- à adapter
' puisque tous les contrôles ne sont pas des TextBoxes
ws2.Cells(no_Ligne, j) = UserForm1.Controls("TextBox" & j).Value
Next j
End SubEn espèrant que cela t'aide ...
Edit : Tu verras en vert les commentaires ... car cela modifiera le code et même la numérotation des TextBoxes et autres contrôles ... si elle n'a pas été faite en pensant au bon ordre ...
Bonjour Jean-Eric,
J'ai également essayé cette façon mais cela ne marche pas non plus.
Je vais la retenter.
Bon café
Sandrine,
Si tu ne veux pas tourner en rond ... pendant des heures ... et même dégeler tes neurones ...
Deux conseils ...
1. Si tu postes du code ... il est toujours plus judicieux de poster la totalité du code ...
2. Si tu te poses la question ... poster le fichier est encore plus judicieux ... car avec les UserForms ... comme tu le sais ... tous les éléments prennent beaucoup d'importance ...
J'ai repris ta formule dont je te remercie mais cela me met un chiffre dans la première colonne, je te mets mon fichier.
Re,
Merci pour ton fichier ...
Mais encore plus important que de faire fonctionner ta sauvegarde ...
Est-ce-que tu as compris la structure logique ...dans la macro TestSandrine....qu'il faudrait appliquer ... ???
Parce ce que ... en toute honnêteté ... Jean-Eric ou moi pouvons très facilement te résoudre le problème........ mais le plus important ... c'est que tu gagnes en compréhension et ... en autonomie ...
James007 a écrit :Re,
Merci pour ton fichier ...
Mais encore plus important que de faire fonctionner ta sauvegarde ...
Est-ce-que tu as compris la structure logique ...dans la macro TestSandrine....qu'il faudrait appliquer ... ???
Parce ce que ... en toute honnêteté ... Jean-Eric ou moi pouvons très facilement te résoudre le problème........ mais le plus important ... c'est que tu gagnes en compréhension et ... en autonomie ...
Je pense avoir compris, je dois rajouter quelque chose pour les combobox c'est ça et tout à fait je veux comprendre avant toute autre chose.
sandrine13 a écrit :Je pense avoir compris, je dois rajouter quelque chose pour les combobox c'est ça et tout à fait je veux comprendre avant toute autre chose.
Félicitations pour ton état d'esprit ... !!!
James007 a écrit :sandrine13 a écrit :Je pense avoir compris, je dois rajouter quelque chose pour les combobox c'est ça et tout à fait je veux comprendre avant toute autre chose.
Félicitations pour ton état d'esprit ... !!!
Merci.
Donc, si j'ai bien tout compris For j = 1 to 16 nombre de mes textbox sans les combobox
et je dois peut être rajouter la même formule en remplaçant "Textbox" par combobox ?
[quote="sandrine13"][
Merci.
Donc, si j'ai bien tout compris For j = 1 to 16 nombre de mes textbox sans les combobox
et je dois peut être rajouter la même formule en remplaçant "Textbox" par combobox ?[/quote]
Re,
Avant de t'occuper des exceptions que sont tes deux Comboboxes ... il faut t'assurer que l'instruction générique pour les TextBoxes est effectivement celle qui fera exactement ce que tu veux ... ...
RE,
A tester.
Cdlt.
Private Sub CommandButton1_Click()
Dim lRow As Long, i As Long
Dim strX As String
Dim tbl, Arr()
Set WB = ThisWorkbook
Set WS = WB.Worksheets("BASE")
strX = "TextBox2 TextBox3 TextBox4 Textbox5 TextBox6 TextBox7 TextBox8 Textbox9 Textbox10 TextBox11 "
strX = strX & "ComboBox1 ComboBox2 Textbox12 Textbox13 TextBox14 TextBox15"
tbl = Split(strX, " ")
ReDim Arr(15)
For i = LBound(tbl) To UBound(tbl)
Arr(i) = tbl(i)
Next i
With WS
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Resize(1, UBound(Arr, 1)).Value = Arr
End With
Erase Arr
Set WS = WB.Worksheets("SYNTHESE")
strX = "TextBox2 TextBox3 ComboBox1 ComboBox2 TextBox10 TextBox11 TextBox8 TextBox9 Textbox12 TextBox16 "
strX = strX & "TextBox17 TextBox18 TextBox19 TextBox20 TextBox21 Textbox22 Textbox23 TextBox24 TextBox25 "
strX = strX & "TextBox26 TextBox27 TextBox28 TextBox29 TextBox30"
tbl = Split(strX, " ")
ReDim Arr(23)
For i = LBound(tbl) To UBound(tbl)
Arr(i) = tbl(i)
Next i
With WS
lRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(lRow, 1).Resize(1, UBound(Arr, 1)).Value = Arr
End With
Erase Arr
MsgBox ("ENREGISTRER")
Unload Me
CONTROLE.Show
End Sub