Bug ActiveCell.Offset(1, 0).Select
ohlitdays
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
ohlitdays Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
ohlitdays Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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 :)
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
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
« 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
ohlitdays
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
Merci :)