macro copier coller

Skcha

XLDnaute Nouveau
Bonsoir au forum

Permettez-moi d’exposer ma naïveté de débutant en macro et peut être de trouver une solution auprès de vous.

J’ai réalisé une macro pour copier coller une partie d’un tableau Excel dans une autre feuille du classeur
Ce tableau comporte un nom pour chaque colonne, et les cellules en dessous reçoivent des données qui peuvent être des caractères ou des chiffres.

J’ai utilisé la propriété : maPlage.currentRegion.copy

Mon problème cette formule fonctionne tant qu’il n’y a pas de lignes vides. Des qu’elle rencontre une ligne vide elle s’arrête
Autre souci bien qu’une plage soit spécifié si la cellule adjacente de la plage spécifiée est non vide, cette dernière se trouve sélectionnée même-ci on ne la souhaite pas.

Question quelle méthode faut-il utiliser pour réaliser une macro copier coller sans que celle-ci soit obligée d’intégrer les cellules ab jacentes ou s’arrêter parce qu’elle rencontre une ligne vide.

Par avance merci pour le coup de main

Skcha débutant novice
 

Bricofire

XLDnaute Impliqué
Bonsoir Skcha, :)

Bon ce que tu décrit est normal et sert beaucoup... avant la conception d'une feuille... pour utiliser ces propriétés justement, je crois que pour te donner un réponse correcte, ce qu'il nous faut, c'est savoir quels sont tes critères pour déterminer ta fameurse plage. Si tu sais ce que tu veux copier, tu dois pouvoir exposer comment tu en défini les limites, vu que si tu ne laisses rien de côté, c'est une copie de feuille qui intervient. Donc quelles sont tes facteurs de bornes, à partir de là les réponses devraient tomber.

cordialement,

Bfr
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir Skcha, Bricofire,

Je tente quand même une réponse...

Prenons un exemple :

Soit un tableau utilisant les colonnes A à H avec une ligne d'entête (ligne 1)
Si on considère que dans une ligne complétée, la première cellule (colonne A) contiendra toujours une donnée (elle pourra être vide si, et seulement si, tout le reste de la ligne est vide) :
[ol][ul][li]Si tu veux connaître le numéro de la dernière ligne contenant effectivement des données :
      Dim NumDernLigne As Long

      NumDernLigne = ActiveSheet.Range('A65536').End(xlUp).Row
Pour info, '.Range('A65536').End(xlUp)' c'est comme si tu te plaçais sur la dernière cellule de la colonne A (limite Excel = 65536 lignes) et que tu appuies sur les touches CTRL+ Flèche Haut. Cela t'amène à la première cellule contenant une valeur en remontant dans la feuille.[/li]
[li]Si tu veux sélectionner l'ensemble du tableau maintenant (même s'il y a des lignes vides au milieu!), tu peux faire :
      ActiveSheet.Range('A1:H' & NumDernLigne).Select

      'Ou bien :

      With ActiveSheet
            .Range(.Cells(1, 1), .Cells(NumDernLigne, 8)).Select
      End With
[/li]
[li]Si tu veux sélectionner uniquement les données (sans l'entête) :
      ActiveSheet.Range('A2:H' & NumDernLigne).Select
     
      'Ou bien :
     
      With ActiveSheet
            .Range(.Cells(2, 1), .Cells(NumDernLigne, 8)).Select
      End With
[/li][/ul][/ol]
En espérant avoir pu t'aider...

Cordialement,
 

Skcha

XLDnaute Nouveau
Bricofire bonsoir,

Tout d'abord merci pour ton aide et conseil.

Avec l'exemple que tu as donné, tu perçois très bien mon problème lorsque tu exposes les colonnes A à H.
Effectivement je voudrais récuperer des infos dans ladite plage A à H
tout en sachant qu'il existe parfois des lignes vides et H n'est pas la borne du tableau mais une étape. La colonne I ne m'interesse pas mais JKL oui.
Les données peuvent occupées entre 3 et 1500 lignes d'où l'utilité de la macro.

Avec les conseils que tu as donné je vais tenter quelque choses et j'aviserai de ma réussite ou de mon échec.

Bien sympathiquement

Skcha
 

Skcha

XLDnaute Nouveau
Bricofire bonsoir,

Tout d'abord merci pour ton aide et conseil.

Avec l'exemple que tu as donné, tu perçois très bien mon problème lorsque tu exposes les colonnes A à H.
Effectivement je voudrais récuperer des infos dans ladite plage A à H
tout en sachant qu'il existe parfois des lignes vides et H n'est pas la borne du tableau mais une étape. La colonne I ne m'interesse pas mais JKL oui.
Les données peuvent occupées entre 3 et 1500 lignes d'où l'utilité de la macro.

Avec les conseils que tu as donné je vais tenter quelque choses et j'aviserai de ma réussite ou de mon échec.

Bien sympathiquement

Skcha
 

Bricofire

XLDnaute Impliqué
Ouarf, merci Didier ;) :) , dommage qu'il n'y ai pas de compteur de bons points :lol: :whistle:

Merci aussi Skcha :) , bon sinon, pour arriver à faire manuellement une fois ce que tu veux, tu procède par étapes logiques, si tu mets pas écrit pas à pas ce que tu fais, tu pourras en sortir un algorithme qui sera forcément traduisible en vba (pourquoi telle colonne et pas celle là, s'agit-il toujours de colonnes entières etc...)

Bonne soirée à vous deux & au forum :)

Bfr
 

Skcha

XLDnaute Nouveau
Bricofire bonsoir,

j'ai lu avec attention ton message, je soumettrais une prochaine fois mon problème de façon plus explicite. Aujourd'hui était mon premier forum, je dirais un galop d'essai.
Cette histoire de macro n'est pas terminée donc, tu auras certainement l'occasion d'intervenir à nouveau.

En tout cas bravo pour cette solidarité.

Merci au forum

Skcha
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 330
Membres
103 519
dernier inscrit
Thomas_grc11