Excel - Prob de compatibilité des macros

Résolu
kilianh Messages postés 12 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 12 avril 2006 - 24 mars 2006 à 10:36
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 - 24 mars 2006 à 15:56
bonjour,

Je suis entrain de developper une petite application en VB via Excel, chez moi çà marche bien (Excel 2002 + Win XP pro SP2), chez mon boss çà marche bien aussi (Meme config), et sur mes postes de travails (1er : XP Home + Excel 2000, 2eme : Win NT + Excel 97) çà marchait bien hier matin et en debut d'apres midi, sans meme avoir changé le code, rien du tout, çà m'affiche un bug...Erreur d'execution '1004'. Ci dessous, le fichier excel. L'erreur intervient lorsque je cliques sur mon bouton "Ajouter un semestre".

http://www.organic-nord.fr/Ebooks/Copie%20de%20Commission%20ASA%20v0.3.xls

Merci

6 réponses

Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
24 mars 2006 à 15:56
A Ok tous s'explique autant pour moi alors et bon courrage pour la suite
3
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
24 mars 2006 à 11:30
Juste comme ça au premier abord, ça semble bien fonctionner. Par contre je constate plusieurs variables non définis.
Je te conseil de rajouter au début de chaque module un Option Explicit qui t'obligera à correctement déclarer tes variables et t'évitera bien des problèmes du genre que tu décris
0
kilianh Messages postés 12 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 12 avril 2006
24 mars 2006 à 12:48
C'est a dire ? je comprends pas trop çà fait que 4 jours que je m'y suis mis donc si tu pouvais detailler ou voir meme me marquer un morceau de code pour que je vois un peu mieux ...?? Merci d'avance
0
kilianh Messages postés 12 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 12 avril 2006
24 mars 2006 à 15:01
le probleme est reglé, en fait c'est parce que la zone copiée et plus grande que la zone de destination et donc çà genere l'erreur. Sur excel 2002, çà force la copie et donc çà marche mais pas sur les versions antérieures de Excell

Bien a vous.

Mickael
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
24 mars 2006 à 15:09
oui pas de problème.
Sur ton "module 1" et ce qui est en rouge ce sont mes corrections

Option Explicit ' utile pour te forcer à déclarer tes variable. A mettre a la première ligne du module
Sub CreaListeAnnees()
'
' CreaListeAnnees Macro
' Macro enregistrée le 21/03/2006 par BERTAI93
' Cette macro affiche un tableau sur la feuil3 commençant en A1 avec l'année en cours
' en finissant a la Cellule An = 1990
' perso je préfère une déclaration plus explicite que Dim n, s
Dim n As Integer, s As Integer
n = 1 'n variable pour le compteur des années
s = 0 's variable pour la position des cellules


Sheets("Edition").Select 'On travail sur la feuille 2


' Effacer le contenu des cellules si on ancien tableau d'années


Cells(n, 11).Select 'Position de depart (K1)
While ActiveCell.Value <> "" 'Tant que la cellulle contient qlqchose
ActiveCell.Value = "" 'On la vide
Cells(n, 12).Select 'A TITRE INDICATIF
ActiveCell.Value = "" 'A TITRE INDICATIF
n = n + 1 'On incremente de 1 le compteur
Cells(n, 11).Select 'On se posionne sur la cellule suivante
Wend

n = 1 'Reinitialisation du compteur


Cells(n, 11).Select 'On selection la cellule K1
ActiveCell.Value = "=YEAR(TODAY())" 'La cellule A1 reçoit l'année en cours

While ActiveCell.Value > 1990 'Tant que la valeur de la cellule active est > 1990
Cells(n, 11).Select 'On selectionne la cellule
ActiveCell.Value = Year(Now()) - s 'Et elle reçoit L'année en cours + valeur du compteur s
n = n + 1 'On incremente n pour passer a la cellule suivante
s = s + 1 'On incremente le compteur de 1 pour l'année suivante
Wend
End Sub

Sub IntegrerListe()
'
' IntegrerListe Macro
' Macro enregistrée le 21/03/2006 par BERTAI93
' Permet de compter le nombre d'enregistrements pour les années et puis donc de pouvoir adapter une liste dynamiquement
' en fonction de ce nombre d'enregistrements. LOL Meme moi j'ai du mal a me comprendre !!
Dim z As Integer, test As string


z = 1 'Création et initialisation du compteur z (Nbr d'enregistrements)
Sheets("Edition").Select 'On selection la feuille ou travailler
Cells(z, 11).Select 'On selectionne la cellule de depart pour le compteur z

While ActiveCell.Value <> "" 'Tant que la cellule n'est pas vide (C'est donc qu'elle contient une année)
Cells(z, 12).Select 'A TITRE INDICATIF
ActiveCell.Value = z 'A TITRE INDICATIF
z = z + 1
Cells(z, 11).Select
Wend

z = z - 1 'On retire 1 au compteur des enregistrements


test = "=$K$1:$K$" & z ' A quoi sert cette ligne ?? a supprimer
Range("C7").Select 'Position en C5 pour lui affecter la liste deroulante
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=test
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub

Sur ton "module 2" et ce qui est en rouge ce sont mes corrections

Option Explicit ' utile pour te forcer à déclarer tes variable. A mettre a la première ligne du module
Sub AjouterSemestre()
'
' AjouterSemestre Macro
' Macro enregistrée le 21/03/2006 par MiKa
'
Dim i As Integer, z As Integer, selection1 As String, selection2 As String
'Dim n Pourquoi déclarer une variable n que tu n'utilise pas dans ton code
i = 7 'i variable pour le cpt du nbr de semestres
Sheets("Edition").Select 'On travail sur la feuille 2

'On compte le nombre d'enregistrements/de semestres
Cells(7, 2).Select 'Position pour le debut du comptage
While ActiveCell.Value <> "Secours" 'Tant que le contenu de la cellulle et different de "Secours"
i = i + 1 'On incremente de 1 le compteur
Cells(i, 2).Select 'On se posionne sur la cellule suivante
Wend


'Test affichage
Cells(9, 1).Select 'A TITRE INDICATIF
ActiveCell.Value = "Il y a " & (i - 6) & " Enregistrements" 'A TITRE INDICATIF


'Rajout de la ligne en dernier


Cells(1, 2).Select 'On selectionne la cellule de depart pour le compteur z
z = 1
While ActiveCell.Value <> "Secours" 'Tant que la cellule est differente de secours
z = z + 1
Cells(z, 2).Select
Wend

selection1 = "B" & z & ":I" & z
selection2 = "B" & z & ":H" & z


Range("B7:J7").Select
Selection.Copy
Range(selection1).Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
Range(selection2).Select
Selection.ClearContents
Range("D9").Select


End Sub


Pour le troisième module je te laisse le soin de modifier.
Juste une petite chose. Il faut faire attention avec les copier/coller.
Par ailleurs lorsque tu utilise du code qui n'est pas de toi, c'est mieux de le préciser en commentaire dans ton code.
Je te dis ça parce que tu semble être novice en programmation et certaine de lignes de ton code utilise des boucles ou des fonctions de VB qui suppose déjà une bonne maitrise de VB et à forcerie des variables.
0
kilianh Messages postés 12 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 12 avril 2006
24 mars 2006 à 15:31
Euh lol ... non les boucles sont de moi. Je les ai ecrites en langages courant While (condition) {i++;...} et un internaute m'a aidé a les traduire en VBA. En fait, je sais programmer mais je l'ai jamais fait en VBA c'est pour çà que mes declarations de variables ne sont pas abouties comme tu l'as fait. J'ai deja programmé en Assembleur, C++, Turbo pascal, PHP etc etc ... mais là, çà faisait 3 ans que je n'avais rien fait.

En tout cas, je tiens a te remercie de bien avoir voulu m'aider.

Bon week end ++
0
Rejoignez-nous