Vba code erreur ligne 13

plop

XLDnaute Nouveau
Bonjour. J aimerai pouvoir mettre à jour un code Vba d'une macro qui date de 2006 et qui ne marche pas pour faire des badges via publipostage word...mais le big dans ces macros est selon le correcteur :
**-----> For i = ligneCible To (ligneCible + nbPers)
En fait dans une feuille de mon classeur mon tableau de repas avec des quantité de personnes et des horaires midi,et soir sont à recopier autant de fois par le nombre de personne dans le feuillet à côté pour un publipostage word.
C est la requête qui n est pas juste car les coordonnées sont bonnes...je ne suis pas du tout excellente mais j aimerais bien comprendre et pouvoir y arriver...pouvez vous me donner des astuces et me dire si cela est possible...

merci beaucoup pour votre précieuse aide



Sub Badges()
'
' Badges Macro
' Macro enregistrée le 09/04/2008 par *
'
' Touche de raccourci du clavier: Ctrl+Maj+B
'
***Range("A4:K4").Select
***ActiveWindow.ScrollRow = 2
***ActiveWindow.ScrollRow = 4
***ActiveWindow.ScrollRow = 8
***ActiveWindow.ScrollRow = 12
***ActiveWindow.ScrollRow = 17
***ActiveWindow.ScrollRow = 25
***ActiveWindow.ScrollRow = 34
***ActiveWindow.ScrollRow = 43
***ActiveWindow.ScrollRow = 55
***ActiveWindow.ScrollRow = 68
***ActiveWindow.ScrollRow = 82
***ActiveWindow.ScrollRow = 95
***ActiveWindow.ScrollRow = 107
***ActiveWindow.ScrollRow = 118
***ActiveWindow.ScrollRow = 130
***ActiveWindow.ScrollRow = 144
***ActiveWindow.ScrollRow = 159
***ActiveWindow.ScrollRow = 171
***ActiveWindow.ScrollRow = 186
***ActiveWindow.ScrollRow = 201
***ActiveWindow.ScrollRow = 215
***ActiveWindow.ScrollRow = 229
***ActiveWindow.ScrollRow = 244
***ActiveWindow.ScrollRow = 258
***ActiveWindow.ScrollRow = 271
***ActiveWindow.ScrollRow = 281
***ActiveWindow.ScrollRow = 289
***ActiveWindow.ScrollRow = 294
***ActiveWindow.ScrollRow = 298
***ActiveWindow.ScrollRow = 303
***ActiveWindow.ScrollRow = 309
***ActiveWindow.ScrollRow = 318
***ActiveWindow.ScrollRow = 326
***ActiveWindow.ScrollRow = 334
***ActiveWindow.ScrollRow = 340
***ActiveWindow.ScrollRow = 346
***ActiveWindow.ScrollRow = 349
***ActiveWindow.ScrollRow = 352
***ActiveWindow.ScrollRow = 355
***ActiveWindow.ScrollRow = 357
***ActiveWindow.ScrollRow = 359
***ActiveWindow.ScrollRow = 361
***ActiveWindow.ScrollRow = 364
***ActiveWindow.ScrollRow = 369
***ActiveWindow.ScrollRow = 373
***Range("A4:K400").Select
***Application.CutCopyMode = False
***Selection.Copy
***ActiveWindow.SmallScroll Down:=-39
***ActiveWindow.ScrollRow = 332
***ActiveWindow.ScrollRow = 329
***ActiveWindow.ScrollRow = 324
***ActiveWindow.ScrollRow = 319
***ActiveWindow.ScrollRow = 310
***ActiveWindow.ScrollRow = 300
***ActiveWindow.ScrollRow = 289
***ActiveWindow.ScrollRow = 278
***ActiveWindow.ScrollRow = 265
***ActiveWindow.ScrollRow = 253
***ActiveWindow.ScrollRow = 240
***ActiveWindow.ScrollRow = 226
***ActiveWindow.ScrollRow = 211
***ActiveWindow.ScrollRow = 198
***ActiveWindow.ScrollRow = 184
***ActiveWindow.ScrollRow = 171
***ActiveWindow.ScrollRow = 159
***ActiveWindow.ScrollRow = 150
***ActiveWindow.ScrollRow = 142
***ActiveWindow.ScrollRow = 134
***ActiveWindow.ScrollRow = 126
***ActiveWindow.ScrollRow = 117
***ActiveWindow.ScrollRow = 108
***ActiveWindow.ScrollRow = 100
***ActiveWindow.ScrollRow = 91
***ActiveWindow.ScrollRow = 81
***ActiveWindow.ScrollRow = 73
***ActiveWindow.ScrollRow = 64
***ActiveWindow.ScrollRow = 55
***ActiveWindow.ScrollRow = 48
***ActiveWindow.ScrollRow = 43
***ActiveWindow.ScrollRow = 39
***ActiveWindow.ScrollRow = 35
***ActiveWindow.ScrollRow = 31
***ActiveWindow.ScrollRow = 29
***ActiveWindow.ScrollRow = 26
***ActiveWindow.ScrollRow = 23
***ActiveWindow.ScrollRow = 21
***ActiveWindow.ScrollRow = 19
***ActiveWindow.ScrollRow = 18
***ActiveWindow.ScrollRow = 17
***ActiveWindow.ScrollRow = 15
***ActiveWindow.ScrollRow = 14
***ActiveWindow.ScrollRow = 12
***ActiveWindow.ScrollRow = 10
***ActiveWindow.ScrollRow = 9
***ActiveWindow.ScrollRow = 5
***ActiveWindow.ScrollRow = 2
***ActiveWindow.ScrollRow = 1
***Sheets("Récap repas").Select
***Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
*******:=False, Transpose:=False
***Application.CutCopyMode = False
***Selection.Borders(xlDiagonalDown).LineStyle = xlNone
***Selection.Borders(xlDiagonalUp).LineStyle = xlNone
***With Selection.Borders(xlEdgeLeft)
*******.LineStyle = xlContinuous
*******.Weight = xlThin
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlEdgeTop)
*******.LineStyle = xlContinuous
*******.Weight = xlThin
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlEdgeBottom)
*******.LineStyle = xlContinuous
*******.Weight = xlThin
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlEdgeRight)
*******.LineStyle = xlContinuous
*******.Weight = xlThin
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlInsideVertical)
*******.LineStyle = xlContinuous
*******.Weight = xlThin
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlInsideHorizontal)
*******.LineStyle = xlContinuous
*******.Weight = xlThin
*******.ColorIndex = xlAutomatic
***End With
***Selection.Borders(xlDiagonalDown).LineStyle = xlNone
***Selection.Borders(xlDiagonalUp).LineStyle = xlNone
***With Selection.Borders(xlEdgeLeft)
*******.LineStyle = xlContinuous
*******.Weight = xlMedium
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlEdgeTop)
*******.LineStyle = xlContinuous
*******.Weight = xlMedium
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlEdgeBottom)
*******.LineStyle = xlContinuous
*******.Weight = xlMedium
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlEdgeRight)
*******.LineStyle = xlContinuous
*******.Weight = xlMedium
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlInsideVertical)
*******.LineStyle = xlContinuous
*******.Weight = xlThin
*******.ColorIndex = xlAutomatic
***End With
***With Selection.Borders(xlInsideHorizontal)
*******.LineStyle = xlContinuous
*******.Weight = xlThin
*******.ColorIndex = xlAutomatic
***End With
***End Sub
***Sub copie_badges()
'
' copie_badges Macro
' Macro enregistrée le 29/04/2006
'

'
Dim ligneSource, ligneCible, nbPers

ligneCible = 2

For ligneSource = 2 To 200

***Sheets("Récap repas").Select
***nbPers = Range("C" & ligneSource).Value
***Range("A" & ligneSource & ":K" & ligneSource).Select
***Selection.Copy
***Sheets("Liste badges").Select

**-----> For i = ligneCible To (ligneCible + nbPers)

*******Range("A" & i).Select
*******ActiveSheet.Paste

***Next i

***ligneCible = ligneCible + nbPers

Next ligneSource
End Sub
 

Misange

XLDnaute Barbatruc
Re : Vba code erreur ligne 13

Bonjour

ce serait beaucoup plus simple que tu nous mettes un petit classeur exemple...
Ta macro a visiblement été faite avec l'enregistreur de macros et comporte beaucoup de choses inutiles comme tous ces scrollrow ou select.
 

Fred0o

XLDnaute Barbatruc
Re : Vba code erreur ligne 13

Bonjour plop, Misange.

A la première lecture, difficile de t'aider, surtout que ton code avec les **** est illisible. Ensuite, tu devrais supprimer tous les "ActiveWindow.ScrollRow" qui alourdissent le code pour rien.

Cependant, vérifie que ton tableau "A2:K200" ne contienne que des valeurs numériques entières. Peut-être le problème vient-il de là. Mais comme te l'as suggéré Misange, le mieux serait d'abvoir un extrait de ton fichier.

A+
 

plop

XLDnaute Nouveau
Re : Vba code erreur ligne 13

Bonjour merci pour votre rapidité. Je viens en effet de reprendre seulement avec le code de macro de 2006 ...et ce qui ne va toujours pas est la ligne 13... Je voudrais bien vous envoyer un classeur mais il est super complexe et plein de formule croisées...le besoin est que le tableau de la feuille récap repas se recopie dans la page badge sans formule avec pour consigne de reprendre dans la colonne groupe le code, dans la colonne nom le nom, dans la colonne des jours l heure des repas et ce autant de ligne que le nombre de personne dans la colonne nombre de personne...voilà si je peux me faire comprendre.. Merci et si il y a moyen de m expliquer car je suis plutôt null. Merci encore
 

plop

XLDnaute Nouveau
Re : Vba code erreur ligne 13

R[SUB][/SUB]BonjourfredO, Misange,
Les valeurs de A2 AK ne sont pas que des valeurs numériques...code type C001.
...nom. Texte
....nombre de personne. 92
....heure de repas. 18h30 ceci sur des colonnes jours sur une semaine
Merci beaucoup
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : Vba code erreur ligne 13

Re-bonjour,

C'est pour cela que le code plante. L'origine de l'erreur est le fait que tu n'aies pas que des valeurs numérique dans les cellules dont tu te sert pour incrémenter un compteur.
Pour aller plus loin, merci de fournir un extrait d'une quinzaine de lignes anonymisé de ton fichier. Ensuite, nous pourrons tester et essayer de te fournir une réponse adaptée.

A+
 

Roland_M

XLDnaute Barbatruc
Re : Vba code erreur ligne 13

bonjour à tous

s'il ne s'agit que de cette ligne ! ce n'est donc qu'une erreur !?
**-----> For i = ligneCible To (ligneCible + nbPers)

si ligneCible = 10 et si nbPers = 10 ... ça fait bien 20 !
mais le 10 compte donc For i = 10 to 19 (10 + 10 -1)

logiquement:
**-----> For i = ligneCible To (ligneCible + nbPers – 1)
 
Dernière édition:

plop

XLDnaute Nouveau
Re : Vba code erreur ligne 13

Bonsoir Roland M ,
Merci pour votre message... Cela reste toujours avec la même indication d erreur en ligne 13...
Je crois qu il me faut un fichier complètement à part qui serait du type suivant : un fichier de deux feuilles :
Une feuille nommée Récap Repas :

Une colonne Qui indique le code type C001, avec une colonne suivante qui indique le nom du groupe,une troisième colonne qui correspond au nombre de person
ne et puis successivement des colonnes jour type jeudi vendredi samedi dimanche !...avec possibilité horaire de repas de 11h30 12h00 12h30. 13h00 13h30. 14h00 14h30. Pour midi et 19h00 19h30 20h00 20h30 21h00 21h30....de la, dans la seconde doit reprendre l 'ensemble des infos par groupe et horaires de repas autant fous de ligne que de quantité de personne pour le publipostage...sur word. Enfin je pense que le mieux c est de reprendre mon fichier de 2003 qui est un tableau trop complexe par petit module et surtout de tout reprendre avec du code Vba qui éviterait que les utilisateurs big les fr. mules que je n arrête déjà pas a remettre en place...qu en pensez vous...merci de bien vouloir m excuser pour mon incompétence ...
 

Roland_M

XLDnaute Barbatruc
Re : Vba code erreur ligne 13

re

j'ai modifer le sub en question qui pose problème
Sub Copie_Badges() avec la boucle For i = LigneSource ...
j'ai incorporé un traitement d'erreur !
tu essaies comme ceci et tu notes le message d'erreur quand il apparaîtra !

EDIT
tu te place sur ce sub et tu fais exécuter pas à pas !
c'est à dire avec F8 et chaque fois que tu feras F8 tu verras les lignes qui sont excécutées !
et le code s'arrêtera sur la ligne en question avec le déclenchement du traitement d'erreur !

EDIT supprimé ! voir code suivant #17
Code:
 
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Vba code erreur ligne 13

Bonjour

il n'y a pas besoin d'envoyer ton fichier au webmaster du forum. Le pauvre, il ne ferait plus que cela !
tu cliques en bas de la fenêtre sur aller en mode avancé et tu cliques ensuite sur le trombone pour joindre un classeur exemple.
N'envoie pas ton classeur complet, surtout si il est plein de trucs sans rapport avec la question. Fais un extrait (ou un autre en partant de zéro) qui montre exactement ton problème, ce que tu cherches à faire, ce à quoi tu veux aboutir. Sans exemple on parle dans le vide.
 

Discussions similaires

Réponses
5
Affichages
1 K
Réponses
8
Affichages
666

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87