Se connecter avec
S'enregistrer | Connectez-vous

Aide macro insertion

Dernière réponse : dans Programmation

Bonjour,

J'utilise dans un de mes Fichiers Excel un Formulaire associé a du VBA pour incorpporer les données dans le fichier et reconnaitre ou est la dernière ligne active.

Mais après insertion d'une ligne, les formules des cellules déjà présente ne sont pas copiées, je n'arrive pas à recopier les formules de ces cellules.

J'utilise la macro suivante :

  1. Private Sub cmdPopulate_Click()
  2.  
  3.  
  4. 'Find empty cell for new data
  5. Worksheets("Orders Funnel").Activate
  6. ActiveSheet.Range("A3").Select
  7. CheckLine = ActiveSheet.Range("A3").Value
  8. NextLine = 1
  9. Tracker = 4
  10.  
  11. Do While CheckLine <> Empty
  12. ActiveSheet.Range("A3").Offset(NextLine, 0).Select
  13. CheckLine = ActiveSheet.Range("A" & Tracker).Value
  14. Tracker = Tracker + 1
  15. NextLine = NextLine + 1
  16. Loop
  17.  
  18. Tracker = Tracker - 1
  19.  
  20. ActiveSheet.Rows(Tracker & ":" & Tracker).Select
  21. Selection.Insert shiftXldown


Merci d'avance

Autres pages sur : aide macro insertion

Lassé par la pub ? Créez un compte
Expert Programmation

Lignes 19/20 (en amélioré)
ActiveSheet.Rows(Tracker & ":" & Tracker).Insert shiftXldown

Où vois-tu une demande de copie ?
Tu demandes d'insérer une ligne, c'est tout !
Que veux-tu copier ?
Toute la dernière ligne, seulement certaines colonnes ?

Citation :
Lignes 19/20 (en amélioré)
ActiveSheet.Rows(Tracker & ":" & Tracker).Insert shiftXldown

Où vois-tu une demande de copie ?
Tu demandes d'insérer une ligne, c'est tout !
Que veux-tu copier ?
Toute la dernière ligne, seulement certaines colonnes ?


Il n'y a effectivement pas de copie de fonction car à chaque fois que je le fait tout foire....

J'aurais juste besoin de conserver la même macro qu'auparavant (qui amrche très bien) mais je voudrais que lorsque j'insere une ligne, les formules de la dernière ligne active s'insère aussi.

Avec cette macro seulement le données s'insèrent, les cellule qui normalement s'autocalcul ne le font pas...

Merci
Expert Programmation

Citation :
J'aurais juste besoin de conserver la même macro qu'auparavant (qui amrche très bien)
Tu n'échapperas à des critiques en publiant du code moche (c'est mon point de vue)... Pourvu que cela te soit profitable.

Voilà ce que je te propose :
  1. Option Explicit
  2.  
  3. Sub cmdPopulate_Click()
  4. Dim cell As Range
  5.  
  6. ' Considérer la cellule A3 d'une feuille
  7. Set cell = Worksheets("Orders Funnel").Range("A3")
  8.  
  9. ' Boucler tant que la cellule n'est pas vide
  10. Do While cell.Text <> Empty
  11. ' La cellule considérée est la suivante dans la colonne
  12. Set cell = cell.Offset(1, 0)
  13. Loop
  14.  
  15. ' Copier
  16. Rows(cell.Row - 1).Copy
  17. ' Coller
  18. Rows(cell.Row).Insert shiftXldown
  19. ' Fin de la copie
  20. Application.CutCopyMode = False
  21.  
  22. ' Sélection de la cellule
  23. cell.Worksheet.Select
  24. cell.Select
  25. End Sub

En +, ça marche, même la copie :sol:  A toi maintenant de bien tout comprendre.

Si je supprime les Select/Selection et autres Activate, c'est pour des problèmes de performances d'une part et d'inutilité d'autre part.

Ca doit être ça !!!

Le code marche bien merci.

Néanmoins je doit vraiment être mauvais en français, car en fait, j'utilise une form pour insérer une ligne et avec les valeur qu'on rentre dans la form. Tout ca fonctionne.

Mais dans la nouvelle ligne qui vient d'être insérer avec les valeurs que l'ont a remplis dans la form les formules de la dernière ligne active ne sont pas recopié.

En gros j'insère toutes mes données à l'aide ce formulaire qui insère une ligne automatiquement mais après je doit copier coller des formules dans certains cellule pour que les calculs se fassent !!

Promis je vais lui donner de l'aour au Vb si toutefois ça peut me faire avancer !!!

BHa ca marche pas si bien que ca en fait, j'ai encore pas mal de code après et du coup ca foire.

J'aimerai juste, si qq à la solution, rajouter qq chose dans mon code pour copier les formules de la dernière ligne active dans ma ligne insérée.

  1. Private Sub cmdPopulate_Click()
  2.  
  3.  
  4. 'Find empty cell for new data
  5. Worksheets("Orders Funnel").Activate
  6. ActiveSheet.Range("A3").Select
  7. CheckLine = ActiveSheet.Range("A3").Value
  8. NextLine = 1
  9. Tracker = 4
  10.  
  11. Do While CheckLine <> Empty
  12. ActiveSheet.Range("A3").Offset(NextLine, 0).Select
  13. CheckLine = ActiveSheet.Range("A" & Tracker).Value
  14. Tracker = Tracker + 1
  15. NextLine = NextLine + 1
  16. Loop
  17.  
  18. Tracker = Tracker - 1
  19.  
  20. ActiveSheet.Rows(Tracker & ":" & Tracker).Select
  21. Selection.Insert shiftXldown


Lassé par la pub ? Créez un compte