Tout d'abord bonne année à tous et tous mes meilleurs voeux!!
J'ai un petit problème. J'ai une erreur d'incompatibilité de type qui se lance avec ce programme suivant:
Private Sub Enregistrer()
Dim LastLig As Long
Dim i As Byte, j As Byte
NF$ = "Rex_Sauvegarde"
Sheets(NF$).Activate
With Sheets(NF$)
'Copie les données
LastLig = .Cells(.Rows.Count, 4).End(xlUp).Row + 1 'ligne vide
For i = LastLig To LastLig + 15
If i Mod 7 <> 0 Then .Range("D" & i).Value = Me.Controls("TextBox" & i - LastLig + 1 & "B")
Next i
i = ListBox2.ListCount
If i > 0 Then
For j = 2 To 5
.Range(.Cells(LastLig, 9 + j), .Cells(LastLig + i, 9 + j)) = Me.Controls("ListBox" + j).List
Next j
End If
Ne sais-tu pas (il sermble que non) que l'on peut affecter à une plage de cellules les valeurs d'une listbox ?
Je crains fort que ta réponse n'égare le demandeur !
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Bon, je pense avoir trouver mon erreur mais à vous de me dire:
i a été déclaré comme Byte et je l'ai affecté à une variable Long(i=LastLig to LastLig+15)
Donc la modif donne:
With Sheets("Rex_Sauvegarde")
LastLig = .Cells(.Rows.Count, 4).End(xlUp).Row + 1
For i = 0 To 15
If i <> 5 Then .Range("D" & LastLig+i).Value = Me.Controls("TextBox" & i + 1 & "B")
Next i
i = ListBox2.ListCount
If i > 0 Then
For j = 2 To 5
.Range(.Cells(LastLig, 9 + j), .Cells(LastLig + i, 9 + j)) = Me.Controls("ListBox" & j).List
Next j
End If
End With
bonjour,
pour info le type byte est limité a 255, le type integer a environ 32000 et le type long a plusieurs million je crois, donc pour la plupart des programmes vba, autant utiliser integer ou long
Commence par vvoir ce que contient LastLig (msgbox ou debug)
Puis va dans ton aide en ligne découvrir quelle est la limite d'une variable de tyupe Byte...
Rerviens ensuite (si encore une question), mais en nous précisant en plus sur quelle ligne tu as l'erreur
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Re...
1) Confirme-nous que tu as bien 4 listboxes nommées ListBox2, Listbox3, listbox4 et Listbox5
2) confirme-nous que ces 4 listboxes sont situées dans un userform
3) précise-nous dans quoi tu as mis ta routine Enregistrer
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
si tes réponses (toutes celles donnhées jusqu'ici) sont exactes, ton erreur ne peut survenir que si les données d'une ou de plusieurs de la/des Listbox(es) considérée(s) sont d'un type incompatible avec celui des cellules de destination ! (et là, ma foi, tu es seul avec toi-même à poiuvoir le détermner).
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
coller toutes les données d'une liste dont le nom est "Listbox" +Cstr(j) dans la cellule donné par le numéro de ligne (LastLig) et de colonne (=9+j)
on a l'impression que tu veux affecter deux cellule l'une sous l'autre ) la colonne (9+j) et aux ligne LastLig et LastLig+i
on ne sait pas trop ce qu'il y a à faire...
Dim s as string
s = ""
For k=0 to Me.Controls("ListBox" + Cstr(j)).List.Listcount-1
s = s & Me.Controls("ListBox" + Cstr(j)).List(k).Text
Next k
.Range(.Cells(LastLig, 9 + j), .Cells(LastLig + i, 9 + j)).Value =s
effectivement, je n'ai jamais fait dans mes programmes d'affctation à une plage de cellules
Excuses moi mais quand on ne sait pas faire quelque chose d'un peu complexe, on réduit la complexité à ce que l'on sait faire