Remplir des lignes Vba

  • Initiateur de la discussion Initiateur de la discussion Calvus
  • 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 !

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
 
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

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.
 
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:
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

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.
 
- 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
2
Affichages
184
Réponses
5
Affichages
832
Retour