Re : VBa : sélectionner une ligne entière par variables
Bonjour
Pas de message d'erreur, ça n'insère simplement pas la ligne...
A+
Voici le code entier...En fait au moment d'insérer la ligne, la macro repart tout au début et se re-déroule normalement jusqu'à l'insertion ligne, n'insère pas de ligne et remplit la ligne 41 en écrasant les données déjà présentes...
Private Sub Worksheet_Change(ByVal Target As Range)
'si on selectionne plus d'une cellule, la macro s'arrete : permet de supprimer ou d'ajouter des lignes et des colonnes
'je declare la variable
'TitreImprevu As String
If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then
Exit Sub
'Si je tape imprevu
ElseIf Target = "imprevu" Then
'Je récupère le mois courant
mois = Month(Now())
'Je récupère la ligne où j'ai tapé imprevu
Irow = Target.Row
'Je travaille sur la colonne 3 des montants
Icol = 3
'Je colore la ligne en bleu
Range(Cells(Irow, Icol - 2), Cells(Irow, Icol + 2)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight2
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
'J'initialise la variable
nouvelimprevu = 0
TitreImprevu = 0
'Je met la valeur dans une variable
nouvelimprevu = Cells(Irow, Icol).Value
TitreImprevu = Cells(Irow, Icol - 1).Value
Sheets("Budget-2015").Select
premierrang = 40
Set TitreImprevuBudget = ActiveSheet.Cells(premierrang, 2)
If Not IsEmpty(TitreImprevuBudget) Then
Rows(premierrang + 1).Insert shift:=xlDown
ActiveSheet.Cells(premierrang + 1, 2) = TitreImprevu
ActiveSheet.Cells(premierrang + 1, mois + 3) = nouvelimprevu
Else
ActiveSheet.Cells(premierrang, mois + 3).Value = nouvelimprevu
ActiveSheet.Cells(premierrang, 2).Value = TitreImprevu
End If
End If
End Sub