Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Garth69

XLDnaute Occasionnel
Lut all :) !

J'utilise des "Zones sélectionnées" , puis déclenche des MACRO qui enregistrent leur données vers des formulaires ...

Quand mes zones sélectionnées sont ininterrompues ( $A$1:$C$3 ) ... Pas de problème !

Mais quand j'ai une besoin de sélecter des zones non contigües en 2* ( $D$4:$F$6,$A$1:$C$3 par exemple ... ) toutes mes macros plantent :p ...

Existe il une "combine" ou une commande qui permettrait de réunifier 2 zones sélectionnées non contigües, voir de les unifier dans une unique zone qui pourrait être ensuite sélectionnée de manière ininterrompue ?

Un p'tit exemple de ma problématique dans mon fichier joint ...
 

Pièces jointes

  • Exemple Moi.xls
    42.5 KB · Affichages: 57
  • Exemple Moi.xls
    42.5 KB · Affichages: 62
  • Exemple Moi.xls
    42.5 KB · Affichages: 60

Garth69

XLDnaute Occasionnel
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Bon ... Comme le veut l'adage populaire "Aide toi ... Et le ciel t'aidera ...", après 3:00 à plancher sur mon problème, j'ai un peu avancé, sans y arriver à 100% ( 3 lignes en 3:00 ... Sacré abattage :p ... ).

La fonction " Selection.Areas(XXX) " m'a permis de trouver un début de solution !

Je bloque sur la recopie de ces "Areas(xxx)" dans mon tablo :( ...
Selon les zones sélectées ( Contigües ou pas ... ) ca ne se recopie pas toujours correctement !?

Problème de paramétrage de ma fonction " .Offset(x,x) " je pense :( ...
 

Pièces jointes

  • Exemple Moi.xls
    45.5 KB · Affichages: 49
  • Exemple Moi.xls
    45.5 KB · Affichages: 54
  • Exemple Moi.xls
    45.5 KB · Affichages: 59
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Bonjour,

Si vous avez si peu de réponse, c'est peut-être parce que votre PB est peu compréhensible (du moins pour ma pomme)
Que copie t'on exactement? Nombre de zones maximum? Tailles possibles des zones à copier? Où le copie-t-on? En fonction de quels critères (jours, noms, S ou M)? Dans quel ordre colle-t-on les différentes zones le cas échéant? Situation de départ / situation arrivée ?
 
Dernière édition:

Garth69

XLDnaute Occasionnel
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Ben ... Avec mes fichiers, et surtout le 2eme ca devrait quand même pas mal éclairer mon problème :) !
Je comprends évidemment que décrit "par écrit", ca peut paraitre assez peu compréhensible :p ...

Ca marche quelles que soient les sélections ou leur ordre de sélection contigües, ou non ( C'pour ca que je travaille pas sur des plages définies, mais sur des sélections ... ) ...
Il faut juste faire une 1ere sélection + ajouter une 2eme sélection en conservant un doigt sur CTRL et lancer la MACRO !

J'ai mis 3 zones de sélections distinctes possibles, et de couleur différentes ... Pour mieux expliciter mon problème ...


Si ca marche déjà avec ces 3 zones, ca me conviendra, et j'essaierai ensuite de l'adapter à mes besoins ...
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Bonjour,

pas tout compris non plus sur ton fichier, un exemple ci-dessous qui boucle sur les divers "areas" sélectionnés et les copie dans une colonne, à adapter à ton projet, espérant que cela puisse t'aider à avancer...

Code:
Dim c As Range
For Each c In Selection.Areas
    c.Copy Destination:=Range("K65536").End(xlUp)(2)
Next c

bonne journée
@+
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

(re)Bonjour,

Un autre code? (moins élégant que celui de Pierrot93):

Code:
Sub Copier()
Dim xArea As Range, xCell As Range
 Range("E22:i29").Clear
 Range("C7") = Selection.Address
 
 Set xCell = Range("E22")
 For Each xArea In Selection.Areas
  xArea.Copy xCell
  Set xCell = xCell.Offset(0, xArea.Columns.Count)
 Next xArea
End Sub
 
Dernière édition:

Garth69

XLDnaute Occasionnel
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Si ca peut apporter un éclairage complémentaire :

Que copie t'on exactement ? Des noms, comme ds le fichier ...

Nombre de zones maximum ? 2 zones sélectionnées en même temps maximum ...

Tailles possibles des zones à copier ? Au choix pour le nombre de colonne, mais sur toute la hauteur de la zone colorée ( soit 8 lignes ) ...

Où le copie-t-on ? Dans le Tablo du bas ( Zone E22:I29 ) .

En fonction de quels critères ( Jours, noms, S ou M ) ? Aucun critère de réorganisation ... La 2eme sélection vient se coller après la 1ere ...

Dans quel ordre colle-t-on les différentes zones le cas échéant ? La 1ere zone sélectée rempli la 1ere zone du tablo du bas ...

Situation de départ / situation arrivée ? L'idée étant que zone 1 sélectée + zone 2 sélectée ( Contigües ou pas ) soient copiées ds Tablo du bas de manière contigües ...
 

Garth69

XLDnaute Occasionnel
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Perfect ! Mr Lapomme :D ...

Dans le mile, voir plus puisque ton code marche même avec xSélections ...
( Je ne connaissais pas cette option des "x" ... xCell / xSelection / xRange ... Ca devrait pouvoir me resservir ! )

Le code de Pierrot fonctionne aussi, mais nécessite je pense encore une petite modif, car s'il exécute bien le "recollage des sélections", il ne me les envoies pas dans le tablo du bas ...



Et mon code à moi ... Il était si moisi :p ?


En tout cas merci à l'un comme à l'autre ... Vous me débloquez bien !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Bonjour,

Je me suis permis d'adapter le code de Pierre93 (merci à Pierre93) pour vous montrer qu'il fonctionne aussi. Au lieu de rechercher la 1ière cellule libre de la colonne K, le code recherche la première cellule libre de la ligne 22.


Code:
Sub PierToPier()
Dim I As Integer
 Range("E22:i29").Clear
 Selection.Areas(1).Copy Range("E22")
 For I = 2 To Selection.Areas.Count
     Selection.Areas(I).Copy Destination:=Range("IV22").End(xlToLeft)(1, 2)
 Next I
End Sub

Et mon code à moi ... Il était si moisi ?
Le principe y était. Il fallait juste savoir comment boucler sur l'ensemble des zones de la sélection.
 

Pierrot93

XLDnaute Barbatruc
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

Re,

pour boucler sur les différentes plages sélectionnées, et à l'interieur de celles-c boucler sur chaque cellule de la plage en question, et donc faire une copie celule par cellule :
Code:
Dim c As Range, x As Range
For Each c In Selection.Areas
    For Each x In c.Cells
        x.Copy Destination:=Range("K65536").End(xlUp)(2)
    Next x
Next c

bon après midi
@+
 

Garth69

XLDnaute Occasionnel
Re : Unifier / Traiter 2 zones de sélection non contigües ... Possible ?

En tout cas merci :) ...

Moi qui débute sous VBA ( et qui resterai sans doute débutant ... Très très longtemps ... ), ce ki m'impressionne le plus sur ce forum, c'est que vous semblez tous "parler" le VBA ... Un peu comme si c'était une langue vivante !

C'est vraiment impressionnant !
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 848
Membres
103 974
dernier inscrit
chmikha