XL 2016 Saute de ligne

  • Initiateur de la discussion Initiateur de la discussion eila
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eila

XLDnaute Nouveau
Bonjour,
Je suis entrain de créer un fichier qui permet le calcul de TRS.
Le problème ce que lorsque j'essaye de enregistrer de nouveau l'info, ça s'enregistre mais les lignes d’avants se suppriment.
le fichier est en pj.
Merci 🙂
 

Pièces jointes

Bonsoir Eila,
Vous cherchez la première ligne vide de la feuille2 avec :
iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 1
Par contre vous faites :
For i = 0 To DernLigne
mais je n'ai pas vu où vous initialisez DernLigne.
N'y aurait il pas une erreur sur DernLigne ?
 
Merci pour votre réponse 🙂

Le script est le suivant:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

Dim iRow As Long
Dim s As Integer
Dim i As Integer
i = 0

iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 1 + i


With ThisWorkbook.Sheets(2)

.Range("A" & iRow).Value = ComboBox1.Text
.Range("B" & iRow).Value = LDDate1.Date
.Range("C" & iRow).Value = ComboBox2.Text
.Range("D" & iRow).Value = TextBox2.Value
.Range("E" & iRow).Value = TextBox1.Value


If CheckBox1.Value = True Then
.Range("F" & iRow).Value = CheckBox1.Caption
.Range("G" & iRow).Value = TextBox3.Value
.Range("H" & iRow).Value = TextBox4.Value
.Range("I" & iRow).Value = TextBox5.Value
iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 1
i = i + 1
End If

If CheckBox2.Value = True Then
.Range("F" & iRow).Value = CheckBox2.Caption
.Range("G" & iRow).Value = TextBox6.Value
.Range("H" & iRow).Value = TextBox7.Value
.Range("I" & iRow).Value = TextBox8.Value
iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 2
i = i + 1
End If

If CheckBox3.Value = True Then
.Range("F" & iRow).Value = CheckBox3.Caption
.Range("G" & iRow).Value = TextBox9.Value
.Range("H" & iRow).Value = TextBox10.Value
.Range("I" & iRow).Value = TextBox11.Value
iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 3
i = i + 1
End If
If CheckBox3.Value = True Then
i = i + 1
End If

If CheckBox3.Value = True Then
.Range("F" & iRow).Value = CheckBox4.Caption
.Range("G" & iRow).Value = TextBox12.Value
.Range("H" & iRow).Value = TextBox13.Value
.Range("I" & iRow).Value = TextBox14.Value
iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 4
i = i + 1
End If


End With
Call Reset


Application.ScreenUpdating = True
End Sub


Le problème ce que j'arrive pas à compter i pour savoir ensuite au niveau de 2ème enregistrement à partir de quelle ligne je dois commencer
 
A quoi sert votre "i" ?
Vous l’initialisez à 0 mais vous ne vous en servez pas.
Je pense que le souci vient de :
iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 1 + i
Cela compte les lignes occupées de la colonne A.
Cependant vous écrivez en colonne FGHI sur plusieurs lignes mais pas en colonne A, hormis au début.
Donc, le coup d'après, la valeur iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 1 + i sera fausse.
Je pense qu'il faut qu'à chaque fois que vous faites une écriture en FGHI vous écriviez le N° de semaine en colonne A.
Ou alors, comme à chaque fois vous écrivez en FGHI, votre calcul de ligne doit se faire sur F par exemple. C'est à dire la colonne la plus remplie.
Essayer avec : iRow = Sheets(2).Range("F1048576").End(xlUp).Row + 1 pour voir.
 
Merciii 🙂
Est ce que vous pouvez me donner le syntaxe pour que je puisse remplir les ligne à partir de la 4ème et non pas la deuxième svp ?

Cad comment je dois mettre "iRow = Sheets(2).Range("F1048576").End(xlUp).Row + 1 " pour que je commence à remplir la sheet2 dès la 4ème ligne ?
 
La quatrième ligne de quoi ?
Si vous faites :
iRow = Sheets(2).Range("F1048576").End(xlUp).Row + 4
Il commencera à la quatrième ligne après la première ligne trouvée.
C'est à dire qu'à chaque fois que cette macro s'activera les nouvelles écritures s'effectueront quatre lignes en dessous de la première ligne disponible.
 
Cela veut dire que vous partez d'une feuille Recap vierge ?
Dans ce cas, au début vous faites :
iRow = Sheets(2).Range("A1048576").End(xlUp).Row + 1
if iRow<4 then iRow=4 ' 4 ou 5 suivant ce que vous voulez.
Donc les premières lignes seront toujours vierges.
Après les premières écritures, comme iRow>4 ce sera la gestion normale des lignes.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
941
Retour