Copier des donnees d'une feuille jusqu'à la derrière ligne [Résolu/Fermé]

Signaler
-
 Philour01 -
Bonjour,

Je vous soumets mon problème et vous remercie d'avance pour votre (vos) réponses d'experts. Je souhaite copier des données d'un tableau d'une feuille sur une autre feuille jusqu'à la dernière ligne. A noter une particularite avec des cellules qui comprennent des fonctions mais des resultats vides et ces cellules vides de résultats mais avec des fonctions (=si par exemple .... etc) je ne souhaite pas les copier.
Un exemple pour comprendre mon besoin :
- Tableau de 6 colonnes (composées de chiffres ou lettres) avec 15 lignes
- La derniere ligne avec cellule pleine (c'est à dire disposant d'un resultat donné par la fonction de calcul qui est dans la cellule) est la ligne 10 (mais cela change regulierement et peut être ensuite la ligne 8....)
- Attention, j'ai des fonctions dans les autres cellules (lignes 11 à 15) mais qui ne donnent pas de résultats

Mon problème est que mon code copie et colle toutes les lignes qui ont des fonctions y compris si la cellule est vide (en apparence seulement car elle dispose d'une fonction mais l'interprete comme non vide.)


76 réponses

Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Salut,

Pourquoi ce moins un à Arès, je veux le même car moi non plus je ne comprends rien à la demande.

Tout comme les intervenants Excel n'est pas un devin et ne réagit qu'a des conditions logiques.

Déjà parler le même langage informatique permettrait de mieux se comprendre, exemple "c'est à dire disposant d'un resultat donné par la fonction de calcul " je parlerais plutôt de formules, une fonction est un code VBA

idem "mais cela change regulierement et peut être ensuite la ligne 8.... " comment expliquer à Excel, quel sont les critères ?

ici "j'ai des fonctions dans les autres cellules (lignes 11 à 15) mais qui ne donnent pas de résultats" une fonction ou formule donne inévitablement un résultat sinon à quoi bon les utiliser peut être pour faire joli ?

une cellule vide ne contient absolument rien, si elle contient une formule elle n'est par définition pas vide parce qu'on à saisi des données informatiques "copie et colle toutes les lignes qui ont des fonctions y compris si la cellule est vide (en apparence seulement car elle dispose d'une fonction mais l'interprete comme non vide.) "

Pour obtenir des réponses bien vouloir reformuler la demande et le -1 attribué à Ares est injustifié, seule sa dernière ligne est en trop surtout lorsqu'on a pas compris la question, j'ose croire qu'il n'est pas l'oeuvre du demandeur.
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60654 internautes nous ont dit merci ce mois-ci

Messages postés
3
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
6 mai 2013

Je comprend pas ta question ?
Ou veut tu en venir au juste ?

Pour copier un doccument, tu fait un scan et tu envoi dans l'ordi.
Merci Mike pour ces commentaires et le temp pris à me lire.
effectivement, je tape sur un ipad et Le correcteur orthographique prend des libertés. Je n'avais pas vu cette phrase qui n'est pas de mon cru, milles excuses pour ma mauvaise relecture.
- OUI à la semantique, il s'agit de formules
- Une formule peut donner un resultat egale à "" Donc vide et la difficulté est que EXCEL la considere comme une cellule pleine Sinon il ne la copierai pas.
- Quand je dis que cela change je veux dire que mon fichier me sert à faire des calculs et que chaque calcul est distinct et que mon exemple sur 15 lignes peut être de 20 lignes ....et Donc ma fonction (code BVA) doit pouvoir identifier ma derniere ligne de cellule pleine.
Mon code pour mieux comprendre
Range("B6:G54").Select
Range(Selection, Selection.End(xlDown)).Select

Prend en compte toute la sélection à copier et non pas les seules 3 premieres lignes dont les cellules sont pleines ( formule avec un resultat apparent), les autres lignes disposent de cellules avec formules qui donnent un resultat "".
Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Re,

Effectivement un code VBA va identifier la dernière ligne du tableau, il faut savoir qu'avec un code VBA on rivalise avec le langage d'Excel et il faut être très précis dans sa rédaction sinon on plante l'application. Avant d'écrire quelque formule que ce soit il faudrait voir ton tableau pour savoir sur quelle colonne s'appuyer ou en dire beaucoup plus.

Je reviens sur les cellules contenant des formule et renvoyant rien "" je me répète, la cellule n'est pas vide puisqu'elle contient une formule il faut donc dans les formules qui découlent de ces cellules soit renseignées pour les ignorer
exemple =si(x="";"";si(x="titi"; etc ...))
ou encore =si(x<>"";si(x="titi"; ....))

le mieux serait d'avoir ton tableau sans notes confidentielles que tu peux joindre avec ce lien https://www.cjoint.com/
Bonsoir,

J'ai envoyé mon fichier mais est-il bien arrivé ?
Oui, mes cellules qui ont des formules ( = si(x="bla bla" ;""......) ont des lignes avec un resultat "" ( c'est ce que j'appelle vide dans la mesure ou il n'y a pas un resultat numerique ou alphabetique mais comment les nomme t-on sinon ?)
Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Re,

Non pas de fichier, pour envoyer un fichier il faut cliquer sur le lien, puis sur parcourir pour le sélectionner, clic sur le bouton créer le lien, coller dans un post de la discussion le lien qui sera généré
https://www.cjoint.com/
0EgnzRHBZVf.htm
Lien tableau
Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Re,

Oui c'est presque ça mais tu as mal collé le lien, il est invalide il devrait ressembler à quelque chose comme ça

https://www.cjoint.com/c/CEgjmdPAmBL

mais certainement pas à ce lien que tu as collé

0EgnzRHBZVf.htm

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
http://cjoint.com/?CEhoQHPB9Rj
Comme cela ?
Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Re,

oui ce coup la c'est bon, j'ai récupéré ton fichier.
Que veux tu faire exactement déplacer les lignes non vide de la feuille OGDAB vers la feuille Edit5 ou simplement les copier ?

une fois les données sur la feuille Edit5 si tu dois en copier d'autres doivent elles se mettre à la suite ?

et les données de la feuille OGDAB sont elles conservées ou effacées ?

la colonne dont l'en tête SIECLE correspond à quoi et doit elle être copiée sur la feuille Edit5

les deux feuilles doivent également avoir le même nombre de colonnes et les colonnes doivent correspondre

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
Avant tout, Merci pour ton aide Mike.

Mon objectif :
* Copier les lignes non vide (mais uniquement celles qui donnent un résultat numérique ou alphabétique et ne pas copier celles qui donnent un résultat vide "") de la feuille OGDAB vers la feuille EDIT5.
* Oui, les autres lignes (d'origine car on peut avoir au départ 20 lignes ou + ou en complément) doivent pouvoir se mettre à la suite.
* Les données d'OGDAB sont à conserver.
* On ne fait rien avec la colonne siècle comme avec surface sol (qui ne sont donc pas à reprendre)
* Ah ! Bon, si on doit avoir les mêmes colonnes on peut regrouper les colonnes à copier et mettre en fin de colonne celles qui ne le sont pas car sur l'onglet EDIT5 j'ai moins de colonne (surface sol et siècle absents et j'en ai besoin sur l'onglet OGDAB).

Et ensuite, il faut que je puisse reprendre du texte d'un autre onglet à la suite de ces lignes de tableau.

Bonne soirée
Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Re,

il faudra revoir tes formules de la feuille OGDAB qui se sont mise en vrac par l'absence du fichier [TarifDAB1]Fiche Estimation'!
j'ai revue tes cellules fusionnées et déplacé la colonne Surface au sol
j'ai également ajouté la colonne I qui sert de détrompeur afin d'éviter de copier deux fois les mêmes données, pour tester le fichier il suffit d'effacer transféré plus tard tu pourras masquer cette colonne
voila à toi de tester

https://www.cjoint.com/c/CEinTJhyjKS
Génial, ton fichier fonctionne super bien Mike !
Bon, petit problème à résoudre sur 2 points lors du transfert du code sur mon fichier :?
1) Mon onglet "Edit5" contrairement à OGDAB ne dispose pas du même nombre de colonnes car il comprend des tableaux et du texte avec un formatage nécessitant plus de colonnes qui sont fusionnées (derniere colonne M et non pas I). Je me penche sur le problème pour qu'elles soient similaires sur les 2 onglets mais le code VBA fonctionne t-il avec des colonnes fusionnées (si elles sont identiques) sur les 2 onglets ?
2) Il faut savoir que les données à copier doivent être collées à partir de la ligne 176 (et oui, j'ai deux feuilles pleine avant le tableau à copier.) Cela n'impacte t-il pas ta fonction ?

Encore merci pour ton aide !
Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Re,

Fonctionner en l'état je doute, un code VBA est très précis, il est possible d'avoir des différences de présentation de tableau, dans ce cas il faut en tenir compte dans le code, ce qui le complique, l'allonge et surtout le ralenti.

l'idéal est de créer à l'identique les parties des tableaux commune, si on doit coller les cellules de 5 colonnes par exemple il est préférable que les colonnes du tableau de réception soit identiques ce qui limite le code à quelques lignes et augmente sa rapidité.

Si sur un tableau tu as des cellules fusionnées, on doit les retrouver sur le deuxième tableau sinon ton code plantera.

Si tu n'y arrives pas, poste moi ton fichier réel même sans notes afin que je te le modifie et adapte le code
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
Bonjour Mike,
Bon, j'ai testé jusqu'à 3 h ce matin et galère de galère je ne comprend pas l'anomalie renvoyée par VBA avec "erreur d'execution13 - incompatibilité de type et la ligne der_lig_I = Evaluate ........ qui se met en jaune alors que j'ai le méme nombre de colonnes ... Etc ?!!!
J'ai créé un onglet qui reprend les données d'OGDAB pour disposer du même nombre de colonnes... (Voir pièce jointe)
Je me rends compte que si je mets du texte en dessous du tableau, la copie se fait après le texte et non plus dans le tableau. Est-il possible de maintenir les copies dans le tableau à partir de la ligne 178 et les copies doivent toutes s'insérer avant le texte du dessous.

Je ne réussis pas à prendre la main sur ton bouton (clique gauche ne donne rien)

À te lire
Cordialement
Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Re,

poste ton nouveau fichier, que je vois, parce que comme cela difficile de voir ce qui cloche
http://cjoint.com/?CEjrDr4c2iw
Comme convenu dans note précédente mais je n'y arrive pas avec l'IPAD
Messages postés
17221
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 septembre 2020
4 227
Re

que veux tu faire copier les données de la feuille Liste sur la feuille Edit61

et les cellules de la colonne B,C,D,E et F, c'est bien cela

et les Noms de tes feuilles sera Liste et Edit61

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
Oui, en sachant que je peux devoir changer les noms demain en manipulant ta fonction.
Ensuite j'essaierai de tout reprendre sur mon fichier et en cas d'anomalie te ferais suivre mon code avec les difficultés rencontrées. Il était plus utile de t'adresser le fichier avec ses 3 pages et la demande d'insertion des lignes collées au milieu des textes.

Encore merci pour ton aide