Ok quand j'ai regardé sur internet c'est ce que cru comprendre quand j'ai regardé sur internet.
Du coup est ce que y a une solution envisageable dans mon cas ?
Version imprimable
Ok quand j'ai regardé sur internet c'est ce que cru comprendre quand j'ai regardé sur internet.
Du coup est ce que y a une solution envisageable dans mon cas ?
Oui bien sûr, c'est juste que c'est moins intuitif
en gros, les listobjects c'est cool, tu peux naviguer sans te soucier de :
- sa position dans la feuille
- ses dimensions, la zone de ses données, de ses titres, de ses totaux, ses colonnes etc... car le listobject possède des outils et des méthodes pour les manipuler sans avoir à les calculer
donc il faut tout faire à la main
déjà, pour des raisons pratiques, il faut que tes tableaux commencent tous à la même ligne
tu avais parlé de la ligne 9, c'est toujours le cas ?
Oui rien n'a changé, l'entête à la ligne 9 et les données à partir de la ligne 10.
Je suis reparti du classeur que tu as mis dans ton message #14
sans toucher aux feuilles et aux données, j'ai juste modifié un peu le code du userform
voici l'ensemble du module de ton userform après modification, testée et fonctionnelle sur ce fichier là
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Private Sub CommandButton_Fermer_Click() Unload Me End Sub Private Sub ComboBox_ID_Change() With Me ' gestion des identifiants inexistants If .Combobox_ID.ListIndex = -1 Then .Combobox_ID.Value = "" .TextBox_NOM.Value = "" .TextBox_PRENOM.Value = "" .TextBox_RESIDENT.Value = "" Exit Sub End If ' récupération du nom et du prénom lié à l'identifiant choisi dans le menu déroulant .TextBox_NOM.Value = Worksheets("Synthèse").Cells(.Combobox_ID.ListIndex + 10, 4) .TextBox_PRENOM.Value = Worksheets("Synthèse").Cells(.Combobox_ID.ListIndex + 10, 5) .TextBox_RESIDENT.Value = Worksheets("Synthèse").Cells(.Combobox_ID.ListIndex + 10, 7) End With End Sub Private Sub CommandButton_MODIFIER_Click() With Me ' gestion du clic sur le bouton alors qu'on a rien choisi If .Combobox_ID.Value = "" Then MsgBox "Veuillez choisir un identifiant et effectuer les modifications souhaitées" Exit Sub Else ' modification des nom/prénoms dans les 13 tableaux For i = 1 To 13 Worksheets(i).Cells(.Combobox_ID.ListIndex + 10, 4).Value = .TextBox_NOM.Value Worksheets(i).Cells(.Combobox_ID.ListIndex + 10, 5) = .TextBox_PRENOM.Value Worksheets(i).Cells(.Combobox_ID.ListIndex + 10, 7) = .TextBox_RESIDENT.Value Next i End If End With End Sub Private Sub UserForm_Initialize() ' chargement de la liste des identifiants du tableau de synthèse Dim Tablo With Worksheets("Synthèse") Tablo = .Range(.Cells(10, 2), .Cells(.Rows.Count, 2).End(xlUp)) End With Me.Combobox_ID.List = Tablo Application.ScreenUpdating = True End Sub
ça marche parfaitement.
j'attend impatiemment demain pour le testé sur les machine qui tourne sur office 2007 et je vous tiens au courant.
Par avance merci encore.
Bonjour,
je reviens avec toujours vc mes tableaux. Actuellement j'ai un macro que j'appel sur toutes les feuilles de janvier à la synthèse pour qu'il fasse la copie du mois précédente.
j'aimerai savoir si c'est possible d'avoir un unique macro au niveau de la feuille synthèse par exemple pour qu'il fasse tout en même temps au lieu de le faire mois par mois.
Mon Macro:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 Option Explicit Sub SoldePrecedant() 'Call ActivationFeuille(ActiveSheet.Name) 'Call DateExerciceF(ActiveSheet.Name) Dim IdCurr, IdPrec As Integer Dim lgDLprec, lgDLcurr As Long Dim wksCurr, wksPrec As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationAutomatic Set wksCurr = ActiveWorkbook.ActiveSheet If wksCurr.Index > 1 Then Set wksPrec = ActiveWorkbook.Worksheets(wksCurr.Index - 1) If wksCurr.Index = 1 Then Set wksPrec = ActiveWorkbook.Worksheets(12) lgDLprec = wksPrec.Range("B65536").End(xlUp).Row lgDLcurr = wksCurr.Range("B65536").End(xlUp).Row If Len(wksCurr.Range("B10").Value) <> 0 And Len(wksCurr.Range("D10").Value) <> 0 Then MsgBox " ATTENTION! La copie de la situation précédante écrase les données de cette feuille", _ vbExclamation, "COPIE DE LA SITUATION PRECEDANTE" If MsgBox("Confirmez-vous cette opération ?", vbYesNo, "COPIE DE LA SITUATION PRECEDENTE ") = vbYes Then wksCurr.Range("B10:H" & lgDLprec) = wksPrec.Range("B10:H" & lgDLprec).Value wksCurr.Range("I10:I" & lgDLprec) = wksPrec.Range("V10:V" & lgDLprec).Value End If Else wksCurr.Range("B10:H" & lgDLprec) = wksPrec.Range("B10:H" & lgDLprec).Value wksCurr.Range("I10:I" & lgDLprec) = wksPrec.Range("V10:V" & lgDLprec).Value End If 'Call formater(wksCurr) 'wksCurr.Range("I10:I" & lgDLcurr + 1).NumberFormat = "# ##0.00" 'wksCurr.Range("H10:H" & lgDLcurr + 1).NumberFormat = "DD/MM/YYYY" 'lockFeuil (wksCurr.Name) Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub