Collage des valeurs issu de formule dernière ligne non trouvées
Résolu
le nouveau
-
le nouveau -
le nouveau -
A voir également:
- Collage des valeurs issu de formule dernière ligne non trouvées
- Formule si et - Guide
- Partage de photos en ligne - Guide
- Formule somme excel ligne - Guide
- Supprimer dernière page word - Guide
- Retour à la ligne excel formule - Guide
8 réponses
Bonjour,
Je n'ai vraiment rien compris pour ma part...
"Je reviens coller mon tableau" : C'est à dire?
"Je ne suis pas sur la dernière ligne" : C'est à dire?
Cordialement.
Je n'ai vraiment rien compris pour ma part...
"Je reviens coller mon tableau" : C'est à dire?
"Je ne suis pas sur la dernière ligne" : C'est à dire?
Cordialement.
Quand je recolle mon tableau avec la VBA ça me trouve pas la dernière ligne CA me le colle après le collage précédant.
exemple:
ma vba colle toujours le tableau de B1 à C10 feuille 1(composé uniquement de formule)
il se peut que il y est un coup les 3 premières lignes complétées et un prochain coup les 6 première.
donc au 1er collage j'ai bien uniquement les valeurs de B1 à C3 sur la feuille 2 et au deuxième collage au lieu de me le coller en B4 il me colle le tableau en B11 alors que de B4 à C10 c'est vide.
Je ne sais pas si c'est plus claire comme ça?
D'avance merci pour votre aide
exemple:
ma vba colle toujours le tableau de B1 à C10 feuille 1(composé uniquement de formule)
il se peut que il y est un coup les 3 premières lignes complétées et un prochain coup les 6 première.
donc au 1er collage j'ai bien uniquement les valeurs de B1 à C3 sur la feuille 2 et au deuxième collage au lieu de me le coller en B4 il me colle le tableau en B11 alors que de B4 à C10 c'est vide.
Je ne sais pas si c'est plus claire comme ça?
D'avance merci pour votre aide
Bonjour,
Je vais faire clair, si votre tableau est amené à bouger, il faut que la taille de votre tableau, à savoir la dernière ligne, soit définit de manière variable.
Définissez dans un premier temps la dernière du tableau source puis ensuite du tableau de destination comme ceci :
Ensuite, pour le collage, il suffit de lui dire de coller les ligne de 1 à Derniere_Ligne. Et pour la destination, vous mettez que le collage commence à Derniere_Ligne2 + 1.
Cordialement.
Je vais faire clair, si votre tableau est amené à bouger, il faut que la taille de votre tableau, à savoir la dernière ligne, soit définit de manière variable.
Définissez dans un premier temps la dernière du tableau source puis ensuite du tableau de destination comme ceci :
Sub TEST() Dim Derniere_Ligne As Long, Derniere_Ligne2 As Long Derniere_Ligne = Fichier1.Cells(Application.Rows.Count, 1).End(xlUp).Row 'En supposant que la colonne A soit la plus remplie, la colonne de référence pour compter la dernière ligne Derniere_Ligne2 = Fichier2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'En supposant que la colonne A soit la plus remplie, la colonne de référence pour compter la dernière ligne ...
Ensuite, pour le collage, il suffit de lui dire de coller les ligne de 1 à Derniere_Ligne. Et pour la destination, vous mettez que le collage commence à Derniere_Ligne2 + 1.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
la macro testée avec succès
suggestion: il serait peut-^tre intéressant que tu mettes en ligne 1 feuil 2 les ent^tes (qté, def, n°)
si oui
remplacer ligvid=....
par
Michel
la macro testée avec succès
Option Explicit
'-------
Sub CopieTableauTEST()
Dim Tampon, Derlig As Byte, Ligvid As Byte
With Worksheets("FEUIL1")
Derlig = .Columns("B").Find(what:="*", searchdirection:=xlPrevious).Row
Tampon = .Range("B7:D" & Derlig)
End With
With Sheets("FEUIL2")
Ligvid = .Columns("B").Find("", .Range("B" & .Rows.Count), xlValues).Row
With .Range("B" & Ligvid).Resize(UBound(Tampon), 3)
.Value = Tampon
.Borders.Weight = xlThin
End With
.Activate
End With
End Sub
suggestion: il serait peut-^tre intéressant que tu mettes en ligne 1 feuil 2 les ent^tes (qté, def, n°)
si oui
remplacer ligvid=....
par
Ligvid = .Columns("B").Find("", .Range("B1"), xlValues).Row
Michel
Super ça marche ! :) :) :) (serait-il possible de me la décrypter pour la comprendre? SVP
Juste un petit truque comment je peux faire pour pouvoir avoir des lignes vides en haut du tableau? (si c'est possible)
Merci beaucoup en tout cas c'est déjà super !!!!
Juste un petit truque comment je peux faire pour pouvoir avoir des lignes vides en haut du tableau? (si c'est possible)
Merci beaucoup en tout cas c'est déjà super !!!!
Bonjour
Plusieurs choses qu'oublient les débutants (ce n'et pas péjoratif)
1/Option explicit
oblige à déclarer les types des variables : integer, byte, string, variant
une variable déclarée sans type est inscrite en variant (Tampon)
le type variant est très lourd en mémoire
l'erreur classique:
dim toto, tata, Titi as byte
toto et tata sont considérés comme variant
donc
dim Toto as byte Tata as byte etc
ainsi lors d'essai, une faute de frappe, chose que l'on sait bien faire, est signalé
et la macro s'arrête: avec l'expérience, cela s'avère très précieux et économise de la RAM
2/ eviter au maximum les selection.copy paste , select, activate chronophages et encombrants en mémoire
3/ with... end with:
on travaille par bloc: pas besoin d'aller dans la feuille avec activate ou select
et on est sûr que les actions se passent bien dans la feuille voulue; nécessite de mettre un point devant les objets (range, columns...)
on peut l'employer pour une plage de cellule
Derlig,
donne la dernière ligne en remontant (xlprevious)ou il y a quelque chose( le "*" est différent de "") 'est la formule la + sure parmi de nombreuses formules mais assez compliquée
tampon crée un une variable tableau (tableau virtuel) en variant car les types des données peuvent ^tre différents
les données inscrites dans tampon sont les valeurs sans les formats
nouveau bloc avec cette fois une plage de cellules
Range("B" & ligvid) cellule en haut et à gauche de la restitution
resize: agrandir cette cellule au nombre de ligne (ubound: nbre de ligne de tampon) et colonnes de tampon
enfin comme on veut voir le résultat, on est obligé d'appeler la feuille voulue par un activate (préférable à select)
------
edit:
si tu veux commencer la restitution après 4 lignes vides ( lignes 1 à 4)soit ligne 5
Ligvid = .Columns("B").Find("", .Range("B" & .Rows.Count), xlValues).Row+4
Plusieurs choses qu'oublient les débutants (ce n'et pas péjoratif)
1/Option explicit
oblige à déclarer les types des variables : integer, byte, string, variant
une variable déclarée sans type est inscrite en variant (Tampon)
le type variant est très lourd en mémoire
l'erreur classique:
dim toto, tata, Titi as byte
toto et tata sont considérés comme variant
donc
dim Toto as byte Tata as byte etc
ainsi lors d'essai, une faute de frappe, chose que l'on sait bien faire, est signalé
et la macro s'arrête: avec l'expérience, cela s'avère très précieux et économise de la RAM
2/ eviter au maximum les selection.copy paste , select, activate chronophages et encombrants en mémoire
With Worksheets("FEUIL1")
Derlig = .Columns("B").Find(what:="*", searchdirection:=xlPrevious).Row
Tampon = .Range("B7:D" & Derlig)
End With
3/ with... end with:
on travaille par bloc: pas besoin d'aller dans la feuille avec activate ou select
et on est sûr que les actions se passent bien dans la feuille voulue; nécessite de mettre un point devant les objets (range, columns...)
on peut l'employer pour une plage de cellule
Derlig,
donne la dernière ligne en remontant (xlprevious)ou il y a quelque chose( le "*" est différent de "") 'est la formule la + sure parmi de nombreuses formules mais assez compliquée
tampon crée un une variable tableau (tableau virtuel) en variant car les types des données peuvent ^tre différents
les données inscrites dans tampon sont les valeurs sans les formats
With .Range("B" & Ligvid).Resize(UBound(Tampon), 3)
.Value = Tampon
.Borders.Weight = xlThin
End With
nouveau bloc avec cette fois une plage de cellules
Range("B" & ligvid) cellule en haut et à gauche de la restitution
resize: agrandir cette cellule au nombre de ligne (ubound: nbre de ligne de tampon) et colonnes de tampon
enfin comme on veut voir le résultat, on est obligé d'appeler la feuille voulue par un activate (préférable à select)
------
edit:
si tu veux commencer la restitution après 4 lignes vides ( lignes 1 à 4)soit ligne 5
Ligvid = .Columns("B").Find("", .Range("B" & .Rows.Count), xlValues).Row+4