Selection d'une plage non fixe et copie dans une autre feuille

stan87

XLDnaute Nouveau
Bonjours, je parcours depuis plusieurs jours le forum et ne trouve pas de solution à mon problème.
Dans un classeur une feuille 4 est insérée par import d'un autre logiciel. Dans cette feuille il y a un tableau que je voudrais copier automatiquement vers la feuille 1 dans une cellule qui est elle figée (ici A4). Ce tableau ne comporte pas toujours le même nbre de lignes et ne commence pas toujours sur la même cellule. C'est la cellule contenant la chaîne de caractère "CATALOGUE DES PAROIS" qui indique le début de la plage voulu.
Avez vous une solution via une macro.
Merci
 

Pièces jointes

  • select plage et copie.xlsx
    13.7 KB · Affichages: 92

mth

XLDnaute Barbatruc
Re : Selection d'une plage non fixe et copie dans une autre feuille

Bonsoir,

Un petit essai avec ce code:
Code:
Sub Macro1()
Dim Derlig As Long
    With Sheets("Feuil1")
        .Columns("A:C").ClearContents
    End With
 
    With Sheets("Feuil4")
        Derlig = .Cells(Rows.Count, 1).End(xlUp).Row
        X = .Columns("A:A").Find(What:="CATALOGUE DES PAROIS", After:=Cells(1, 1), LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Address
 
        .Range(X & ":C" & Derlig).Copy Sheets("Feuil1").Range("A4")
    End With
End Sub

Vois si cela peut t'aider.

Bonne soirée,

mth

Edit: Bonsoir Fred0o
contente de te croiser :)
 
Dernière édition:

Fred0o

XLDnaute Barbatruc
Re : Selection d'une plage non fixe et copie dans une autre feuille

Bonsoir stan et bienvenue sur le forum.

Un essai en pièce jointe.

A+

Edit : Bonsoir mth, tu vois, t'es pas toujours en retard !
 

Pièces jointes

  • stan87.xlsm
    20.4 KB · Affichages: 113

stan87

XLDnaute Nouveau
Re : Selection d'une plage non fixe et copie dans une autre feuille

Bonjour et merci de ces réponses aussi rapide.
Dans la solution de mth j'ai un message d'erreur du débogueur, " variable non définie" sur x=
Dans la solution de Fred0o ça marche mais il faudrait que je puisse arrêter la sélection avant la copie au seul tableau, car dans le fichier d'origine le tableau est suivi d'autre info que je veux pas copier, et pour simplifier la chose ce tableau n'a pas toujours le même nombre de ligne.
Merci encore
 

mth

XLDnaute Barbatruc
Re : Selection d'une plage non fixe et copie dans une autre feuille

Bonjour stan

si tu as mis Option Explicit( ce qui est très bien) rajoute ceci:

Code:
[COLOR=darkslateblue][COLOR=black]Dim Derlig As Long[/COLOR][B], x As String[/B]
[/COLOR]

Bonne journée,

mth
 

stan87

XLDnaute Nouveau
Re : Selection d'une plage non fixe et copie dans une autre feuille

Bonjour et encore merci de votre aide
FredOo, dans ta solution j'ai trouvé comment limiter la copie à un certain nombre de ligne, mais comme mon tableau de la feuil4 n'a pas toujours le même nombre de lignes, je voudrais savoir si il est possible d’arrêter la sélection à la première ligne vide après le tableau.
mth ta solution fonctionne trés bien aussi maintenant et si tu as une idée pour la question posé à fred0o avec ta solution je suis preneur aussi.
Merci
 
Dernière édition:

Softmama

XLDnaute Accro
Re : Selection d'une plage non fixe et copie dans une autre feuille

Bonjour à tous,

Je ne peux ouvrir les fichiers .xlsx, ayant une vieille version d'excel, mais tu peux modifier le code de mth pour aboutir à ce que souhaites de la façon suivante :



Code:
Sub macro1()
[COLOR="Red"]Dim X As String[/COLOR]
    With Sheets("Feuil1")
        .Columns("A:C").ClearContents
    End With
    With Sheets("Feuil4")
        X = .Columns("A:A").Find(What:="CATALOGUE DES PAROIS", After:=Cells(1, 1), LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Address
        [COLOR="Red"].Range(X).CurrentRegion.Copy Sheets("Feuil1").Range("A4")[/COLOR]
    End With
End Sub
 

mth

XLDnaute Barbatruc
Re : Selection d'une plage non fixe et copie dans une autre feuille

Bonsoir stan,

Nous avions la même logique avec Fred0o, pour calculer la dernière ligne nous partions du bas et remontions vers le haut jusqu'à la dernière cellule remplie.
Petit cachotier :) tu n'avais pas dit qu'il y avait autre chose dans ton fichier :)

Essaie donc avec ce code (il fonctionne, et tient compte des lignes vides entre les titres et le tableau lui même, à adapter en cas de changement):

Code:
Option Explicit
Sub macro1()
Dim X As Long, y As Long
    With Sheets("Feuil1")
        .Columns("A:C").ClearContents
    End With
 
    With Sheets("Feuil4")
        'Derlig = .Cells(Rows.Count, 1).End(xlUp).Row
        X = .Columns("A:A").Find(What:="CATALOGUE DES PAROIS", After:=Cells(1, 1), LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Row
        y = .Cells(X + 4, 1).End(xlDown).Row
 
        .Range("A" & X & ":C" & y).Copy Sheets("Feuil1").Range("A4")
    End With
End Sub

Bien à toi,

mth

Edit: :) Bonsoir Fredo0 :)
Sorry, je n'avais pas vu que tu étais connecté ...
mais bien contente de te croiser :)
Bise,
m
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 644
dernier inscrit
MOLOKO67