Bug ActiveCell.Offset(1, 0).Select

Fermé
ohlitdays Messages postés 2 Date d'inscription jeudi 13 avril 2017 Statut Membre Dernière intervention 14 avril 2017 - 13 avril 2017 à 17:26
ohlitdays Messages postés 2 Date d'inscription jeudi 13 avril 2017 Statut Membre Dernière intervention 14 avril 2017 - 14 avril 2017 à 12:29
Bonjour,

Novice en VBA, j'ai un problème sur la commande suivante :

Sub Macro1
ChDir ActiveWorkbook.Path
Application.ScreenUpdating = False
choix = MsgBox("Voulez-vous mettre à jour la table ?", vbYesNo, "Votre choix")
If choix = vbYes Then
'Aller à l'onglet TABL (2)
Sheets("TABL (2)").Select
'Ctrl + flèche vers la droite
Range("A1").Select
Selection.End(xlToRight).Select
Selection.Offset(1, 1).Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-12],TCD!C[-12]:C[-10],3,FALSE)"
'Copier-coller la formule vers le bas
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))
Selection.End(xlUp).Select
ActiveCell.EntireColumn.Select
Selection.Insert Shift:=xlToLeft
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=+IFERROR(RC[-1],0)"
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))
Selection.End(xlUp).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Selection.Offset(0, -1).Select
Selection.End(xlUp).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Activate
'Début compteur
Do While ActiveCell <> ""
If IsError(ActiveCell.Value) Then
'Couleur de remplissage rouge
ActiveCell.Value = "0"
Selection.Interior.ColorIndex = 3
End If
'Déplacement d'une ligne vers le bas
ActiveCell.Offset(1, 0).Select
Loop
End If

End Sub

J'aimerais mettre à jour une table à partir d'un tableau croisé dynamique.
L'objectif de la macro est qu'à chaque nouveau mois, le curseur se place après la dernière colonne remplie (mois précédent) et qu'il copie une formule dans la colonne. Si le résultat de la formule affiche une erreur (#N/A) alors elle doit remplacer #N/A par 0 et colorier la cellule en rouge.

Quand je lance la macro, le débogage bloque sur la dernière ligne : ActiveCell.Offset(1, 0).Select

Quelqu'un aurait une solution ?

Merci d'avance :)

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
14 avril 2017 à 12:11
Bonjour,

« Quelqu'un aurait une solution ? »

Oui, bannir l'emploi de Select et d'Activecell (inutiles et source d'erreurs)
Ici un excellent cours VBA :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf
1
ohlitdays Messages postés 2 Date d'inscription jeudi 13 avril 2017 Statut Membre Dernière intervention 14 avril 2017
14 avril 2017 à 12:29
Merci :)
0