Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Remplir des lignes Vba

Calvus

XLDnaute Barbatruc
Bonsoir le forum,

Comment remplir des lignes bordées en haut et en bas ?

C'est à dire que je vais copier des lignes mais qui vont s'insérer dans un tableau.
End(XlUp) et End(XlDown) me font buter.. Je ne trouve pas l'astuce.

Merci
 

Calvus

XLDnaute Barbatruc
Re : Remplir des lignes Vba

Bonsoir Papounet,

Voir l'exemple joint.

Je vais chercher des données dans une feuille, et les coller dans une autre. Ici de la feuille 1 à la 2.
Le tableau de la feuille 1 comporte 1000 lignes.

A priori, je sais faire pour la copie :

VB:
Sub Commandes()
Dim cel As Range
For Each cel In Range("E11:E2000")
If cel <> "" And IsNumeric(cel) Then
Feuil31.[c100].End(xlUp).Rows(2) = cel.Offset(, -4)
End If
Next
End Sub

Enfin presque car je n'arrive pas à commencer à la ligne 14 mais à la 13, et surtout, mon tableau est normalement rempli à partir de C70. Donc là ça s'inscrit forcément dessous. Et avec XlDown je n'y arrive pas.

Merci
 

Pièces jointes

  • Insérer lignes.xlsm
    27.5 KB · Affichages: 41
  • Insérer lignes.xlsm
    27.5 KB · Affichages: 38

Papou-net

XLDnaute Barbatruc
Re : Remplir des lignes Vba

RE

Essaie après avoir réécrit ta macro comme ceci:

Code:
Sub Commandes()
Dim cel As Range, Lg As Integer

Lg = Application.Max(14, Feuil2.Range("C" & Rows.Count).End(xlUp).Row + 1)
For Each cel In Range("E10:E" & Rows.Count).SpecialCells(xlCellTypeConstants, 1)
  Feuil2.Range("C" & Lg) = cel.Offset(, -4)
  Lg = Lg + 1
Next
End Sub
La variable Lg prend la valeur maxi entre End(xlUp).Row + 1 et 14, ce qui permet de démarrer en ligne 14 si le tableau est vide.

La boucle scrute uniquement les cellules contenant une valeur numérique (xlCellTypeConstants, 1).

Bonne soirée.

A +

Cordialement.
 

Calvus

XLDnaute Barbatruc
Re : Remplir des lignes Vba

Re,

Merci Papounet, ainsi que pour les commentaires qui me sont très utiles.

Reste deux petits problèmes.
Le plus important, c'est que l'écriture ne s'arrête pas après la ligne 70. Or c'est impératif car j'ai des données dessous. J'aimerais bien mettre un msgbox disant que je suis arrivé à la fin de la zone et qu'il faut une nouvelle feuille par exemple.
Le second, c'est de pouvoir réécrire par dessus, ou en tout cas être invité à le faire. Cad que le lancement de la macro doit recommencer à la ligne 14 à chaque fois.

Merci et bonne soirée
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Remplir des lignes Vba

RE

Ci-joint copie de ton fichier en PJ.

Au lancement de la macro, un message te demande si tu veux écraser le tableau. Si tu réponds Oui, Lg sera initialisé à 14.

Si tu es arrivé en fin de tableau sur Feuil2, un message t'avertit. Mais que faire dans ce cas, faut-il créer une nouvelle feuille sur le modèle de la précédente et continuer à écrire la suite dedans?

A +

Cordialement.
 

Pièces jointes

  • Copie 01 de Insérer lignes.xlsm
    29 KB · Affichages: 39

Calvus

XLDnaute Barbatruc
Re : Remplir des lignes Vba

Re,

Bon je crois avoir trouvé...

VB:
Sub Commandes()
Dim cel As Range, Lg As Integer

Lg = 14
For Each cel In Range("E10:E" & Rows.Count).SpecialCells(xlCellTypeConstants, 1)
  Feuil2.Range("C" & Lg) = cel.Offset(, -4)
  Lg = Lg + 1
If Lg = 70 Then
MsgBox ("Attention, fin de zone")
Exit Sub
End If

Next
End Sub

Pourras tu me dire si cela est correct ?
En tout cas ça fonctionne.

Merci

EDIT : Je vois que tu m'as répondu entre temps. Content de voir qu'il fallait bien démarrer à 14. Je commence à piger Vba !
Je vais de ce pas examiner ton code.
Merci et bonne nuit.
 

Discussions similaires

Réponses
12
Affichages
433
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…