Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Saute de ligne

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

  • banc.xlsm
    185.3 KB · Affichages: 13

sylvanu

XLDnaute Barbatruc
Supporter XLD
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 ?
 

eila

XLDnaute Nouveau
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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

eila

XLDnaute Nouveau
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 ?
 

eila

XLDnaute Nouveau
oui merci ça marcher

Je voudrais juste comment faire pour que je commence de la 4ème ligne parce que je va ajouter d'autres classsification de données et donc je dois commencer à remplir de la 4ème ligne
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

eila

XLDnaute Nouveau
Quand l'avait mis comme ça iRow = Sheets(2).Range("F1048576").End(xlUp).Row + 4 il a toujours sauter 4 ligne alors que je veux qu'il commence de la 4ème ligne et ensuite il saute une ligne par ligne
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

Discussions similaires

  • Résolu(e)
Microsoft 365 planning
Réponses
17
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…