VBA recopier tableau sans lignes vides
Fermé
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
-
13 févr. 2007 à 14:14
jefe.k Messages postés 14 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 16 février 2007 - 16 févr. 2007 à 16:24
jefe.k Messages postés 14 Date d'inscription mardi 13 février 2007 Statut Membre Dernière intervention 16 février 2007 - 16 févr. 2007 à 16:24
A voir également:
- VBA recopier tableau sans lignes vides
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Vba l'indice n'appartient pas à la sélection - Forum VB / VBA
- Le fichier contient un tableau présentant un extrait des livres les plus prêtés à paris en 2016. filtrez le tableau pour ne faire apparaître que les bandes dessinées ado. puis filtrez le tableau pour ne faire apparaître que celles dont l'auteur est zep. quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ? ✓ - Forum Windows 10
10 réponses
ruzakruzak
Messages postés
459
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
31 mai 2007
246
13 févr. 2007 à 16:43
13 févr. 2007 à 16:43
On dirait que tu veux juste faire un tri ! dans ce cas, trie suivant le critère que tu veux avant de te préoccuper du calcul, t'auras déjà un bout de fait...
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
13 févr. 2007 à 19:27
13 févr. 2007 à 19:27
Bonsoir,
en formule matricielle dans ta feuille RECAP :
cordialement
en formule matricielle dans ta feuille RECAP :
A1=SI(ESTERREUR(INDEX(Feuil1!$A$1:$A$10000;PETITE.VALEUR(SI(Feuil1!$A$1:$A$10000<>"";LIGNE(Feuil1!$A$1:$A$10000));LIGNE())));"";INDEX(Feuil1!$A$1:$A$10000;PETITE.VALEUR(SI(Feuil1!$A$1:$A$10000<>"";LIGNE(Feuil1!$A$1:$A$10000));LIGNE())))à recopier vers le bas aussi loin que nécessaire.
cordialement
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
14 févr. 2007 à 09:23
14 févr. 2007 à 09:23
Merci pour l'aide, mais la formule ne recopie que la première ligne du tableau, quand je la fait glisser vers le bas les plages remplis ne sont pas recopiées...
si quelqu'un aurait une solution pour mon problème soit par formule excel soit sous forme de macro ca serait bien sympatique de m'éclairer...
^^,
cordialement
jefe.k
si quelqu'un aurait une solution pour mon problème soit par formule excel soit sous forme de macro ca serait bien sympatique de m'éclairer...
^^,
cordialement
jefe.k
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
14 févr. 2007 à 11:23
14 févr. 2007 à 11:23
Bonjour,
cette formule fonctionne très bien et pas seulement sur la première ligne.
as-tu intégré que c'est une formule matricielle?
A+
cette formule fonctionne très bien et pas seulement sur la première ligne.
as-tu intégré que c'est une formule matricielle?
A+
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
14 févr. 2007 à 11:44
14 févr. 2007 à 11:44
bonjour,
non je n'ai pas intégré cet état de fait j'ai recopier la formule dans la première cellule de m'a feuille récap puis j'ai fait glisser ma formule...
que change le fait qu'il s'agisse d'une formulle matricielle ?
que dois je faire pour que cela marche ?
merci,
@+ ^^
non je n'ai pas intégré cet état de fait j'ai recopier la formule dans la première cellule de m'a feuille récap puis j'ai fait glisser ma formule...
que change le fait qu'il s'agisse d'une formulle matricielle ?
que dois je faire pour que cela marche ?
merci,
@+ ^^
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
14 févr. 2007 à 12:00
14 févr. 2007 à 12:00
Re,
en fait j'ai trouvé pour intégrer le fait qu'il s'agisse d'une formule matricielle...
maintenant cela marche effectivement, mais les cellules vides affiche la valeur O comment faire pour les cacher ?
et cette formulle peut elles s'étendre sur plusieurs colonnes ?
en fait j'ai trouvé pour intégrer le fait qu'il s'agisse d'une formule matricielle...
maintenant cela marche effectivement, mais les cellules vides affiche la valeur O comment faire pour les cacher ?
et cette formulle peut elles s'étendre sur plusieurs colonnes ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
14 févr. 2007 à 12:47
14 févr. 2007 à 12:47
Bonjour,
curieux ces zéros. pas de zéros chez moi!!!
d'autant plus que j'ai surchargé la formule afin qu'elle affiche "" si plus de données.
pour afficher la colonne B (si en A il y a une donnée ):
A+
PS : attention au fait que les formules matricielles sont lourdes et coûteuse en temps de calcul.
si tu as beaucoup de cellules dans ta feuille, il faudra sans doute envisager d'autres solutions
curieux ces zéros. pas de zéros chez moi!!!
d'autant plus que j'ai surchargé la formule afin qu'elle affiche "" si plus de données.
pour afficher la colonne B (si en A il y a une donnée ):
=SI(ESTERREUR(INDEX(Feuil1!$A$1:$A$10000;PETITE.VALEUR(SI(Feuil1!$A$1:$A$10000<>"";LIGNE(Feuil1!$A$1:$A$10000));LIGNE())));"";INDEX(Feuil1!$B$1:$B$10000;PETITE.VALEUR(SI(Feuil1!$A$1:$A$10000<>"";LIGNE(Feuil1!$A$1:$A$10000));LIGNE())))si les zéros ne partent pas, envoie le fichier (sur cjoint.com par exemple)
A+
PS : attention au fait que les formules matricielles sont lourdes et coûteuse en temps de calcul.
si tu as beaucoup de cellules dans ta feuille, il faudra sans doute envisager d'autres solutions
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
14 févr. 2007 à 14:48
14 févr. 2007 à 14:48
ce qu'il y a c'est que j'aimerais pouvoir effectuer cette action sur un nombre important de lignes et de colonnes.
peut on rentrer une plage de ligne et de colonnes a la place des
$a$1:$a$100000
cela est il possible ?
merci,
peut on rentrer une plage de ligne et de colonnes a la place des
$a$1:$a$100000
cela est il possible ?
merci,
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
14 févr. 2007 à 17:06
14 févr. 2007 à 17:06
Re,
tu sélectionnes A1:Q1 par exemple et tu saisis
=SI(ESTERREUR(INDEX('Phase 1'!$A$1:$A$10000;PETITE.VALEUR(SI('Phase 1'!$A$1:$A$10000<>"";LIGNE('Phase 1'!$A$1:$A$10000));LIGNE())));"";INDEX('Phase 1'!$A$1:$Q$10000;PETITE.VALEUR(SI('Phase 1'!$A$1:$A$10000<>"";LIGNE('Phase 1'!$A$1:$A$10000));LIGNE());COLONNE())&"")
en matriciel (on pourrait dire double matricielle puisque à la fois le calcul et la restitution sont en matriciel)
j'ai mis en gras ce que j'ai modifié
A+
tu sélectionnes A1:Q1 par exemple et tu saisis
=SI(ESTERREUR(INDEX('Phase 1'!$A$1:$A$10000;PETITE.VALEUR(SI('Phase 1'!$A$1:$A$10000<>"";LIGNE('Phase 1'!$A$1:$A$10000));LIGNE())));"";INDEX('Phase 1'!$A$1:$Q$10000;PETITE.VALEUR(SI('Phase 1'!$A$1:$A$10000<>"";LIGNE('Phase 1'!$A$1:$A$10000));LIGNE());COLONNE())&"")
en matriciel (on pourrait dire double matricielle puisque à la fois le calcul et la restitution sont en matriciel)
j'ai mis en gras ce que j'ai modifié
A+
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
15 févr. 2007 à 08:44
15 févr. 2007 à 08:44
bonjour,
cette formule a l'air de marcher mais est vraiment trait lourde en temps vu la plage de donnée que je veux recopier,
de plus serait il possible de n'entamer cette recopie qu'a partir de la ligne 6, par exemple ?
une programmation en visual basic ne serai elle pas plus adaptée à ce que je voudrai faire ?
cordialement,
cette formule a l'air de marcher mais est vraiment trait lourde en temps vu la plage de donnée que je veux recopier,
de plus serait il possible de n'entamer cette recopie qu'a partir de la ligne 6, par exemple ?
une programmation en visual basic ne serai elle pas plus adaptée à ce que je voudrai faire ?
cordialement,
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 févr. 2007 à 09:10
15 févr. 2007 à 09:10
Bonjour,
la formule marche-t-elle ou a-t-elle l'air de marcher?
combien de lignes/colonnes veux-tu traiter?
quels temps de réponse as-tu? (en secondes par ex)
il est possible de commencer à la ligne 6 en changeant les $A$1 à l'intérieur des PETITE.VALEUR( ) par $A$6
il est possible(probable) que du code VBA soit plus performant, il faudrait essayer.
d'après ton 1er post, tu n'as pas besoin de mettre à jour la feuille archive en temps réel.
Dans ce cas, tu passes en mode recalcul manuel et tu ne lances une mise à jour de la feuille archive qu'avec un recalcul (via la touche F9)
tu limites ainsi la lourdeur des formules matricielles aux recalculs que tu lances.
A+
la formule marche-t-elle ou a-t-elle l'air de marcher?
combien de lignes/colonnes veux-tu traiter?
quels temps de réponse as-tu? (en secondes par ex)
il est possible de commencer à la ligne 6 en changeant les $A$1 à l'intérieur des PETITE.VALEUR( ) par $A$6
il est possible(probable) que du code VBA soit plus performant, il faudrait essayer.
d'après ton 1er post, tu n'as pas besoin de mettre à jour la feuille archive en temps réel.
Dans ce cas, tu passes en mode recalcul manuel et tu ne lances une mise à jour de la feuille archive qu'avec un recalcul (via la touche F9)
tu limites ainsi la lourdeur des formules matricielles aux recalculs que tu lances.
A+
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
15 févr. 2007 à 09:29
15 févr. 2007 à 09:29
bonjour,
je veux traiter genre une centaines de lignes et de colonnes,
rien que pour 6 colonnes et 90 lignes le temps de réponses est de l'ordre de 3/4 min.
je pense qu'avec un code vba ce que je veux faire demandrai moin de calcul ce qu'il y a c'est que j'ai très peu de notion visual basic et que je ne sais pas comment me diriger....
@+
je veux traiter genre une centaines de lignes et de colonnes,
rien que pour 6 colonnes et 90 lignes le temps de réponses est de l'ordre de 3/4 min.
je pense qu'avec un code vba ce que je veux faire demandrai moin de calcul ce qu'il y a c'est que j'ai très peu de notion visual basic et que je ne sais pas comment me diriger....
@+
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 févr. 2007 à 13:23
15 févr. 2007 à 13:23
Bonjour,
bizarre, chez moi ça prend 1 seconde, ce qui est quand même gênant et modérément acceptable.
pour ce qui est de VBA, essaye ce code :
pour accéder à VBA directement derrière la "feuil1", fais un "clic droit/visualiser le code" sur l'onglet de la "feuil1".
ensuite, tu colles le code ci-dessus
je l'ai limité aux lignes 6 à 105 et aux colonnes Aà CV pour correspondre à tes 100 lignes x 100 colonnes
A+
bizarre, chez moi ça prend 1 seconde, ce qui est quand même gênant et modérément acceptable.
pour ce qui est de VBA, essaye ce code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Row > 5 And Target.Row < 106 Then j = 1 For i = 6 To 105 If Range("A" & i).Value <> "" Then Range("A" & i & ":CV" & i).Copy Destination:=Worksheets("archive").Range("a" & j) j = j + 1 End If Next Application.CutCopyMode = False End If End Subc'est une macro évènementielle à mettre donc derrière la "feuil1" (celle de la saisie).
pour accéder à VBA directement derrière la "feuil1", fais un "clic droit/visualiser le code" sur l'onglet de la "feuil1".
ensuite, tu colles le code ci-dessus
je l'ai limité aux lignes 6 à 105 et aux colonnes Aà CV pour correspondre à tes 100 lignes x 100 colonnes
A+
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
15 févr. 2007 à 14:53
15 févr. 2007 à 14:53
j'ai essayé mais ma feuille récap reste vide...
quand j'ai rentré la selection à copier :
Range("A" & i & ":CV" & i).Copy
visual basic me renvoi un message d'erreur, j'ai donc remplacé la formule par celle ci :
Range("A" & i & ,"CV" & i).Copy
ai je bien fait ? ou est ce la cause de ma page blanche,
merci pour toute cette aide, c'est fort sympatique
A+
quand j'ai rentré la selection à copier :
Range("A" & i & ":CV" & i).Copy
visual basic me renvoi un message d'erreur, j'ai donc remplacé la formule par celle ci :
Range("A" & i & ,"CV" & i).Copy
ai je bien fait ? ou est ce la cause de ma page blanche,
merci pour toute cette aide, c'est fort sympatique
A+
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 févr. 2007 à 15:17
15 févr. 2007 à 15:17
Re,
il faut laisser le ":" dans le range.
ta feuille "récap", je l'ai appelée "archive" dans la macro. modifie le nom
il serait bon de rajouter la ligne :
Worksheets("archive").Rows("" & j & ":" & Worksheets("archive").Range("A65536").End(xlUp).Row & "").ClearContents
juste après le NEXT pour gérer l'effacement des lignes devenues inutiles dans archive/récap
A+
PS : as-tu fais un copier/coller du code ? ou l'as-tu recopié?
la largeur de l'écran introduit des retours à la ligne qui n'ont pas lieu d'être et qu'un copier/coller remet dans l'ordre
il faut laisser le ":" dans le range.
ta feuille "récap", je l'ai appelée "archive" dans la macro. modifie le nom
il serait bon de rajouter la ligne :
Worksheets("archive").Rows("" & j & ":" & Worksheets("archive").Range("A65536").End(xlUp).Row & "").ClearContents
juste après le NEXT pour gérer l'effacement des lignes devenues inutiles dans archive/récap
A+
PS : as-tu fais un copier/coller du code ? ou l'as-tu recopié?
la largeur de l'écran introduit des retours à la ligne qui n'ont pas lieu d'être et qu'un copier/coller remet dans l'ordre
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
15 févr. 2007 à 15:54
15 févr. 2007 à 15:54
j'avais retaper la source et j'avai bien changé le nom..
je vais essayé voir si cela marche, merci
a+
je vais essayé voir si cela marche, merci
a+
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
15 févr. 2007 à 16:38
15 févr. 2007 à 16:38
tjs aucun effet sur ma deuxième feuille...
et tjs l'erreur au niveau du range "a" ":cv"
message d'erreur : problème sur le sépartaeur de liste...
c bien sur ma première feuille que je dois taper la source ?
et tjs l'erreur au niveau du range "a" ":cv"
message d'erreur : problème sur le sépartaeur de liste...
c bien sur ma première feuille que je dois taper la source ?
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
15 févr. 2007 à 16:48
15 févr. 2007 à 16:48
fais un copier/coller du code que tu as saisis en réponse.
sinon on va tourner en rond.
j'espère seulement que tu n'as pas retapé le texte mais que tu as bien fait un copier/coller du code du message (je ne sais plus trop lequel d'ailleurs) mais je te le remet ci dessous :
sinon on va tourner en rond.
j'espère seulement que tu n'as pas retapé le texte mais que tu as bien fait un copier/coller du code du message (je ne sais plus trop lequel d'ailleurs) mais je te le remet ci dessous :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Row > 5 And Target.Row < 106 Then j = 1 For i = 6 To 105 If Range("A" & i).Value <> "" Then Range("A" & i & ":CV" & i).Copy Destination:=Worksheets("archive").Range("a" & j) j = j + 1 End If Next Worksheets("archive").Rows("" & j & ":" & Worksheets("archive").Range("A65536").End(xlUp).Row & "").ClearContents Application.CutCopyMode = False End If End SubA+
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
>
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
16 févr. 2007 à 08:58
16 févr. 2007 à 08:58
quand je fait un copier coller de ce code sur ma première feuille
il ne se passe rien sur ma feuille archive...
il suffit pourtant de le coller avec l'action visualiser le code ? et de le coller tout simplement dans la fenêtre qui s'ouvre. non ?
a+
il ne se passe rien sur ma feuille archive...
il suffit pourtant de le coller avec l'action visualiser le code ? et de le coller tout simplement dans la fenêtre qui s'ouvre. non ?
a+
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
16 févr. 2007 à 09:28
16 févr. 2007 à 09:28
bonjour,
oui, c'est ce qu'il faut faire.
envoie ton fichier sur cjoint.com que je regarde.
ça doit être un truc tout bête.
A+
oui, c'est ce qu'il faut faire.
envoie ton fichier sur cjoint.com que je regarde.
ça doit être un truc tout bête.
A+
jefe.k
Messages postés
14
Date d'inscription
mardi 13 février 2007
Statut
Membre
Dernière intervention
16 février 2007
16 févr. 2007 à 16:24
16 févr. 2007 à 16:24
merci pour tout,
j'ai trouvé de l'aide sur un autre forum et le résultat qui en est sortit marche bien aussi...
pour plus d'information https://www.developpez.net/forums/d280312/logiciels/microsoft-office/excel/macros-vba-excel/vba-e-recopier-tableau-supprimant-plages-vides/
merci encore pour toute cette réflexion et cette attention apportée à mon problème.
a bientot
j'ai trouvé de l'aide sur un autre forum et le résultat qui en est sortit marche bien aussi...
pour plus d'information https://www.developpez.net/forums/d280312/logiciels/microsoft-office/excel/macros-vba-excel/vba-e-recopier-tableau-supprimant-plages-vides/
merci encore pour toute cette réflexion et cette attention apportée à mon problème.
a bientot
13 févr. 2007 à 16:55