problème vba suite migration 2003 vers 2010

MikeBelgique

XLDnaute Occasionnel
Bonjour Forum,

Il y a 5ans Ninbihan m'avait apporté sa précieuse collaboration pour la création d'un programme dont j'utilisais à mon boulot dont l'entreprise fonctionnait sous excell 2003, or suite à la migration de 2003 vers 2010, malheureusement mon tableau ne fonctionne plus.

Voici le code vba :

Public Flag As Boolean
'Flag est une variable qui passe à vrai dès qu'une modif est faite dans BD voir macro évenementielle de BD
'Ensuite lorsque l'on active la feuille projection si cette variable est vrai alors on execute la macro ci dessous
'voir macro évenementielle de projection

Sub generelist()
With Sheets("Projection")
Dim Nbjour As Integer
Dim Cell As Range

'Suppresion des lignes sauf L4 pour garder les formules
If .Range("A4").End(xlDown).Row > 4 And .Range("A4").End(xlDown).Row < 65536 Then
.Range("A5:A" & .Range("A4").End(xlDown).Row).EntireRow.Delete (xlshift)
End If
'Effacement du contenu de la ligne 4
.Range("A4:AH4").ClearContents
'Définition de la première ligne
i = 4
'Boucle balayant toutes les valeurs de BASE DONNEE AGENT
For Each Cell In Sheets("BASE DONNEE AGENT").Range("A2").CurrentRegion
If Not IsEmpty(Cell) And Cell.Row <> 2 Then
.Cells(i, 1) = Sheets("BASE DONNEE AGENT").Cells(2, Cell.Column)
If Right(Cell, 3) = "38H" Or Right(Cell, 3) = "38h" Then 'Ce if détermine la présence de 38 H en fin de nom
.Cells(i, 3) = "38H"
.Cells(i, 2) = Mid(Cell, 1, Len(Cell) - 4)
Else
.Cells(i, 2) = Cell
End If
'Copie du format de La ligne 4
.Range("A4:AH4").Copy
.Range("A" & i).PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'Copie de le formule calcul voir dans insertion nom
Range("D" & i & ":AH" & i).Formula = "=calcul"
Application.CutCopyMode = False
'Passage à la ligne suivante
i = i + 1
End If
Next Cell
'tri
If i > 4 Then
.Range("A4:C" & i).Sort Key1:=Range("A4"), Order1:=xlAscending, Key2:=Range("B4") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
End If

'on copie les valeurs
Range(.Range("A4").End(xlToRight), .Range("A4").End(xlDown)).Copy
.Range("A4").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False

'On masque les colonnes en trop
For Each Cell In .Range("D4:AH4")
If Cell = 0 Then
Cell.EntireColumn.Hidden = True
Else
Cell.EntireColumn.Hidden = False
End If
Next Cell

'On remplace 38h par N si... et on supprime les N
For Each Cell In .Range(.Range("D4").End(xlToRight), .Range("D4").End(xlDown))
If Cell.Value = "N" Or Cell.Value = 0 Or (Cell.Value = "36H" And .Cells(Cell.Row, 3) = "38H") Then
Cell.ClearContents
End If
Next Cell

'on construit la ligne total
' a noter que le quota pour l'instant à 11 peut être modifier par insertion nom, définir
.Range("A3:AH3").Copy
.Range("A" & i).PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
.Range("A" & i & ":C" & i).Merge
.Range("A" & i).Value = "Total présents - " & Mid(ActiveWorkbook.Names("Quota"), 2)
For Each Cell In .Range("D" & i & ":AH" & i)
Cell.Formula = "=" & i - 4 - CInt(Mid(ActiveWorkbook.Names("Quota"), 2)) _
& "-" & "COUNTA(" & Cells(4, Cell.Column).Address & ":" & .Cells(i - 1, Cell.Column).Address & ")"
Next Cell

'on repasse flag à faux pour éviter de regénérer à chaque activation de la feuille
Flag = False
'et voilà... concernant les formules il s'agit d'un décaler classique associé à un équiv qui détermine quel tableau
'prendre en source
'a noter le nom le_mois paramétré dans insertion nom, il détermine la valeur du mois inscrit en A1
'pour ajouter d'autres mois il faut bien modifier la liste de validation de A1
End With
End Sub


La macro bloque tout d'abord sur 'on masque les colonnes en trop
if cell = 0 THEN

ensuite sur on remplace le 38h par N ......
If Cell.Value = "N" Or Cell.Value = 0 Or (Cell.Value = "36H" And .Cells(Cell.Row, 3) = "38H") Then
Cell.ClearContents

Pour plus de facilité voici les liens du fil de l'époque car il y avait d'autres données peut-être importantes.

https://www.excel-downloads.com/threads/recopier-bd.102128/

Dans l'attente de vous relire je vous remercie d'avance de l'aide que vous pourrez m'apporter
 

Staple1600

XLDnaute Barbatruc
Re : problème vba suite migration 2003 vers 2010

Bonjour à tous

Je ne sais si c'est liè à ton problème mais il manque ceci dans ton code
Dim i As Long

et ici il faudrait adapter aux nombres de lignes dispos sous 2010
Code:
'Suppression des lignes sauf L4 pour garder les formules
If .Range("A4").End(xlDown).Row > 4 And .Range("A4").End(xlDown).Row < 65536 Then
.Range("A5:A" & .Range("A4").End(xlDown).Row).EntireRow.Delete (xlshift)
End If
ci-dessous modif
Code vba:
'Suppression des lignes sauf L4 pour garder les formules
If .Range("A4").End(xlDown).Row > 4 And .Range("A4").End(xlDown).Row < Rows.count Then
.Range("A5:A" & .Range("A4").End(xlDown).Row).EntireRow.Delete (xlshift)
End If
 

Staple1600

XLDnaute Barbatruc
Re : problème vba suite migration 2003 vers 2010

Re

D'ailleurs si je ne m'abuse ceci suffirait*, non ?
(* pour la suppression des lignes s'entend)
NB: Normalement le déclarations de variables se mettent toujours en début de code.
Code VBA:
Sub generelist()
Dim Nbjour As Integer
Dim Cell As Range
Dim dl&, i&
With Sheets("Projection")
dl = .Cells(Rows.Count, 1).End(xlUp).Row
'Suppression des lignes sauf L4 pour garder les formules
.Range("A5:A" & dl).EntireRow.Delete
'ci-dessous le reste de ton code
End With
End Sub
 

Si...

XLDnaute Barbatruc
Re : problème vba suite migration 2003 vers 2010

salut

avec "With", ne pas oublier de "." sous peine de rappel à l'ordre surtout si la macro est appelée hors de la référence citée, (n'est-ce pas Staple qui se s'abuse pas ;)) ?
Tu as en fichier joint un code plus concis (voire plus rapide) testé avec 2010.
 

Pièces jointes

  • Dispatche (VBA).xlsm
    35.5 KB · Affichages: 73

MikeBelgique

XLDnaute Occasionnel
Re : problème vba suite migration 2003 vers 2010

Bonjour Forum,

Désolé de revenir si tard mais des priorités m'ont obligé à mettre de coté ce souci.
Le code présenté au dessus est le code final adapté à mon programme définitif, tel qu'il était sous 2003 et fonctionnait impeccablement depuis la mise en place.
Etant donné qu'il y a des noms ou étiquettes définies j'ai remis les liens du fil de l'époque afin de mieux comprendre le tout.

https://www.excel-downloads.com/threads/recopier-bd.102128/

Malheureusement Stapple même si je remplace les codes que tu fournis, lorsque je chosis le mois et lance donc la macro, erreur d'exécution 13 incompatibilité de type et toujours cette ligne en surlignage :


'On masque les colonnes en trop
For Each Cell In .Range("D4:AH4")
If Cell = 0 Then

Ce qui est étonnant c'est que dès le départ les cases du tableau contrairement à ce qui était ne contienne pas de valeur, j'ai #### comme si il ne trouvait pas les valeurs par le nom "calcul" dont les cases font référence, or dans le gestionnaire de noms tous y sont présent, mais les formules de l'époque ne sont elles peut etre plus compatible ?

Si, si j'adapte ta soluce, j'ai le même souci erreur d'exécution 13 incompatibilité de type et toujours cette ligne en surlignage :

R.EntireColumn.Hidden = R = ""
et ensuite
If R.Value <> "R" Then R.ClearContents

ceci même directement sur ton fichier joint

si d'autres idées !, merci
je rejoins le fichier joint définitif de l'époque
 

Pièces jointes

  • Copie de ESSAIS GRILLE Nuit 2008(suite4).xls
    84.5 KB · Affichages: 88
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : problème vba suite migration 2003 vers 2010

Bonjour à tous.


Pour info : chez moi (Vindows 7 + Excel 2010), les fichiers des messages #7 et #8 fonctionnent...​


Bonne journée.


ROGER2327
#6932


Jeudi 19 Haha 141 (Saint Raphael, apéritif et philistin - fête Suprême Quarte)
3 Brumaire An CCXXII, 0,8448h - poire
2013-W43-4T02:01:39Z
 

MikeBelgique

XLDnaute Occasionnel
Re : problème vba suite migration 2003 vers 2010

Bonjour ROGER2327

Ha bon, surprenant, je suis sous seven entreprise et office 2010 au boulot et même les fichiers joints ne fonctionnent pas après ouverture.

Y aurait il quelque chose à activer ou à cocher dans quelconques options ?
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : problème vba suite migration 2003 vers 2010

Re...


(...)

Y aurait il quelque chose à activer ou à cocher dans quelconques options ?
Je ne sais pas... Pour le fichier de #8, j'ai simplement changé de mois dans la liste déroulante ; les valeurs d'erreurs ont disparu et le tableau s'est mis à jour.


Bon courage.


ROGER2327
#6933


Jeudi 19 Haha 141 (Saint Raphael, apéritif et philistin - fête Suprême Quarte)
3 Brumaire An CCXXII, 1,1326h - poire
2013-W43-4T02:43:05Z
 
Dernière édition:

MikeBelgique

XLDnaute Occasionnel
Re : problème vba suite migration 2003 vers 2010

Effectivement roger le fait de changer le mois dans la liste déroulante lance la macro mais moi les valeurs restent erronnées ou plutôt #### (#valeur!), ensuite la fenetre de bogage visual basic apparait, je n'y comprend rien !! puisque tu me confirme que même le fichier de l'époque .xls fonctionne chez toi !!
 
Dernière édition:

MikeBelgique

XLDnaute Occasionnel
Re : problème vba suite migration 2003 vers 2010

Bonsoir forum,


Désolé de revenir à l'abordage mais c'est à y perdre son latin.
J'ai testé chez moi sous seven et office 2010, tout fonctionne, je me le suis re-envoyé par mail au boulot et dès que je l'ouvre au travail dont l'entreprise fonctionne sous seven entreprise et office 2010, les données du tableau disparaissent et laisse place à des #### et lorsque je lance la macro par le choix du mois le buggage expliqué au début du fil apparaît.

Une idée ? j'ai beau tout essayé rien ne va !!
 

Staple1600

XLDnaute Barbatruc
Re : problème vba suite migration 2003 vers 2010

Bonsoir à tous

Est-ce que par hasard ce n'est pas Désactiver toutes les macros sans notification qui est coché par défaut à ton boulot ?
(C'est le cas à mon boulot)
Si oui ouvres Excel, change ce parametre en : Désactiver toutes les macros avec notification
Puis fais Fichier/Ouvrir choisis ton fichier et là actives les macros.
Ça change quelque chose?
 

Discussions similaires

Réponses
1
Affichages
164
Réponses
0
Affichages
148

Statistiques des forums

Discussions
312 199
Messages
2 086 159
Membres
103 147
dernier inscrit
tubaman