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

  • Initiateur de la discussion Initiateur de la discussion Ludo76
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
485
Retour