XL 2016 Problème de copie de formules sur une insertion de Ligne dans un Tableau

Ludo76

XLDnaute Nouveau
Bonjour,

j'utilise le code suivant afin d'insérer dans mon tableau des lignes de saisie et copier ainsi les formules de recherches :

'Copie lignes Création

nblg = Range("E2")
If nblg = 0 Then: End
For I = 1 To nblg
Application.EnableEvents = False ' pour ne pas se mordre la queue
Range("premiereCelluleApresTabanalyse").EntireRow.Insert xlShiftDown
Application.EnableEvents = True
Next I
End Sub

au changement de la cellule B5 Ma macro s'actualise correctement et m’insère les lignes mais ne copie qu'une partie des formules
copie les formules en colonne [A,I,M,O,P] mais pas les colonnes [B,C,D,L,N] et j'exclu la colonne Q.

En Pj le fichier

Si quelqu'un peut m'aider, merci d'avance
 

Pièces jointes

  • Rapport Activité Réalisé demo v1.0.xlsm
    117 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Je pense que votre fichier a un problème. Il as fait planter le classeur plusieurs fois (impossible de sélectionner quoique ce soit).
C'est pourquoi la procédure dans le fichier ci-joint, qui devrait se résumer à 5 lignes est si longue.

Sur un classeur sans problème avec un tableau sans problème, seule la ligne suivante serait utile:
ListObjects("Tableau_RAR").ListRows.Add Alwaysinsert:=True
Puisque les tableaux structurés sont prévus pour ça.

Pour chaque ligne (de la 1 à la n) les formules devraient être identiques pour chaque colonne. Or déjà A10 et A11 n'ont pas les mêmes formules!

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lr As ListRow, cellsWithFormula As Range
    If Not Intersect(Target, Range("B5")) Is Nothing Then
        On Error Resume Next
        Set lr = ListObjects("Tableau_RAR").ListRows.Add(Alwaysinsert:=True)
        If Not lr Is Nothing And lr.Index > 1 Then
            ' Sélectionner les cellules qui ont des formules sur la
            ' ligne précédent celle qui vient d'être ajoutée
            Set cellsWithFormula = lr.Range.Offset(-1).SpecialCells(xlCellTypeFormulas)
            ' reproduire les formules dans la ligne venant d'être ajoutée
            If Not cellsWithFormula Is Nothing Then
                cellsWithFormula.Offset(1).Formula = cellsWithFormula.Formula
            End If
        End If
        On Error GoTo 0
    End If
End Sub

Cordialement
 

Pièces jointes

  • Rapport Activité Réalisé demo v1.0.xlsm
    119.2 KB · Affichages: 5

Ludo76

XLDnaute Nouveau
bonsoir Roblochon,

merci pour ta réponse mais çà ne fonctionne pas comme je le souhaiterai.
en fait j'ai deux items Change à faire.

Au choix de la cellule B5, je calcule le nombre de ligne que j'ai besoin de rajouter en bas de mon tableau en fonction de la cellule E2.

Ensuite au fur et à mesure je remplis mon tableau et je peux avoir besoin de rajouter une ligne si j'arrive dans la saisie de mon dernier client en colonne C.

Dans mon fichier, si je choisis en B5 le code 03-dupont ma cellule E2 passe à 7 => je dois donc rajouter 7 lignes.
 

Pièces jointes

  • Rapport Activité Réalisé demo v2.xlsm
    110.9 KB · Affichages: 4

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Effectivement ce classeur ne plante plus.

Chose importante: les tableaux structurés ne prennent pas en charge les formules matricielles dans leur fonctionalités, c'est pourquoi il ne vous copie pas ces dernières.

Voyez dans le fichier joint la méthode de recopie des formules.
Je n'ai pas cherché à comprendre le résultat, je me suis borné à faire ce que vous demandiez. (ajouter des lignes, copier les formules)


cordialement
 

Pièces jointes

  • Rapport Activité Réalisé demo v2.xlsm
    118.4 KB · Affichages: 9

Discussions similaires

Réponses
3
Affichages
764

Statistiques des forums

Discussions
312 198
Messages
2 086 132
Membres
103 127
dernier inscrit
willwebdesign