Bonjour,
pour contourner un problème de date, j'essaye d'écrire ma macro avec des boucles de cette façon :
Private Sub OK_modif_Click()
'Boucle sur toutes les lignes
i = ListView1.SelectedItem.Index
Cells(i + 1, 1) = ListView1.ListItems(i).Text
'Boucle sur les colonnes '1 To 27
For j = 1 To 3
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
End If
Next j
For j = 4 To 4 'car problème inversion jour et mois colonne (date naissance)
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = CDate(ListView1.ListItems(i).ListSubItems(j).Text)
End If
Next j
For j = 5 To 27
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
End If
Next j
IniListview (InitTableau)
End Sub
les modifs sont enregistrées sur la ligne 2 (ligne 1 = entête du tableau). Que se passe t-il ? Ma macro est-elle correcte ? Y'a t-il un moyen de la raccourcir ?
bah.. tu retiens le numéro d'index des items sélectionnés.... en l'occurence comme tu n'es pas en "multiselect" tu ne peux en avoir qu'un... ou zéro d'ailleurs....
Oups message parti trop vite...
En fait mon tableau comporte 27 colonnes, je voudrais donner le format CDate à certaines colonnes pas forcément les contiguës (col E,J, M à W et Z) et pas aux autres.
peut on écrire plus simplement le code ?
En fait mon tableau comporte 27 colonnes, je voudrais donner le format CDate à certaines colonnes pas forcément les contiguës (col E,J, M à W et Z) et pas aux autres.
peut on écrire plus simplement le code ?
Merci de m'aider. Voici mon code complet.
Peux-tu me dire ou mettre le tien et que dois-je enlever chez moi ?
Private Sub OK_modif_Click()
'Boucle sur toutes les lignes
i = ListView1.SelectedItem.Index
Cells(i + 1, 1) = ListView1.ListItems(i).Text
'Boucle sur les colonnes
For j = 1 To 3 '1 To 27
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
End If
Next j
For j = 4 To 4 'date naissance
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = CDate(ListView1.ListItems(i).ListSubItems(j).Text)
End If
Next j
For j = 5 To 8
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
End If
Next j
For j = 9 To 9 'date entrée
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = CDate(ListView1.ListItems(i).ListSubItems(j).Text)
End If
Next j
For j = 10 To 11
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
End If
Next j
For j = 12 To 22 'date sortie à date IA
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = CDate(ListView1.ListItems(i).ListSubItems(j).Text)
End If
Next j
For j = 23 To 24 'DG + race père
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
End If
Next j
For j = 25 To 25 'date tarissement
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = CDate(ListView1.ListItems(i).ListSubItems(j).Text)
End If
Next j
For j = 26 To 27 'cocci + aimant
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
End If
Next j
pas tout compris de ton apli... et pas trop le temps de me plonger dedans... mais mettre les codes que tu veux voir exécuter sur les colonnes concernées... il y aura sans doute lieu de les adapter
Merci Pierrot de ton aide, si tu retrouves un peu de temps pour moi, voici un peu plus de détail.
En fait le code (trouvé sur le forum, c'est pas de moi) était celui ci au début :
Private Sub OK_modif_Click()
'Boucle sur toutes les lignes
i = ListView1.SelectedItem.Index
Cells(i + 1, 1) = ListView1.ListItems(i).Text
'Boucle sur les colonnes
For j = 1 To 27 'ListView1.ColumnHeaders.Count - 1
If Me("Textbox" & j + 1) <> ListView1.ListItems(i).ListSubItems(j).Text Then
ListView1.ListItems(i).ListSubItems(j).Text = Me("Textbox" & j + 1)
Cells(i + 1, j + 1) = ListView1.ListItems(i).ListSubItems(j).Text
End If
Next j
IniListview (InitTableau)[/QUOTE][/QUOTE]
End Sub
Il marchait sauf que dans les colonnes contenant des dates (col E,J, M à W et Z) les jours et mois étaient inversés d'où l'utilisation du CDate pour ces colonnes.