kilianh
Messages postés12Date d'inscriptionmardi 21 mars 2006StatutMembreDernière intervention12 avril 2006
-
24 mars 2006 à 10:36
Tuning Max
Messages postés314Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention31 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".
Tuning Max
Messages postés314Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention31 août 20061 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
kilianh
Messages postés12Date d'inscriptionmardi 21 mars 2006StatutMembreDernière intervention12 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
kilianh
Messages postés12Date d'inscriptionmardi 21 mars 2006StatutMembreDernière intervention12 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Tuning Max
Messages postés314Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention31 août 20061 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
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.
kilianh
Messages postés12Date d'inscriptionmardi 21 mars 2006StatutMembreDernière intervention12 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.