Collage des valeurs issu de formule dernière ligne non trouvées
Résolu/Fermé
A voir également:
- Collage des valeurs issu de formule dernière ligne non trouvées
- Formule excel - Guide
- Formule si et - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Apparaitre hors ligne instagram - Guide
8 réponses
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
17 sept. 2015 à 10:59
17 sept. 2015 à 10:59
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
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
17 sept. 2015 à 14:09
17 sept. 2015 à 14:09
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.
le nouveau
>
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
18 sept. 2015 à 10:43
18 sept. 2015 à 10:43
Je suis un peu perdu j'ai un fichier test serait-il possible de vous l'envoyer?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 304
>
le nouveau
18 sept. 2015 à 12:14
18 sept. 2015 à 12:14
bonjour
au passage
quand une formule renvoie "" ca ne veut pas dire qu'elle est vide. (voir Raymond Devos)
donc la colonne où tu as la formule, mettons colonne C
Sub lenouveau()
ligvid = Columns("c").Find("", Range("C1"), xlValues).Row
end sub
au passage
quand une formule renvoie "" ca ne veut pas dire qu'elle est vide. (voir Raymond Devos)
donc la colonne où tu as la formule, mettons colonne C
Sub lenouveau()
ligvid = Columns("c").Find("", Range("C1"), xlValues).Row
end sub
le nouveau
>
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
18 sept. 2015 à 23:13
18 sept. 2015 à 23:13
je n'arrive pas à le faire marcher ce code
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
18 sept. 2015 à 14:06
18 sept. 2015 à 14:06
Pour envoyer le fichier, allez le https://www.cjoint.com/
Cordialement.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 304
Modifié par michel_m le 19/09/2015 à 08:50
Modifié par michel_m le 19/09/2015 à 08:50
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 !!!!
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 304
Modifié par michel_m le 20/09/2015 à 10:14
Modifié par michel_m le 20/09/2015 à 10:14
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 304
22 sept. 2015 à 08:04
22 sept. 2015 à 08:04
MERCI
de rien...
de rien...