Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 copies de plages variables à la suite

guyd5469

XLDnaute Nouveau
Bonjour.

Je débute en vba à faire un fichier pour le boulot, j'ai utlisé pas la de macros existantes sur internet et les ait adapté à mon besoin. Toutefois, je suis coincé depuis plusieurs jours sur un problème. Je cherche à copier et coller les valeurs de plusieurs plages de cellule dans une autre feuille à la suite en fonction de la valeur d 'une cellule, (ça je pense pouvoir le faire), le début de ma plage est défini mais je souhaite la faire varier selon la valeur d'une cellule.
Excel 2010 chez moi et 365 au boulot.

Si quelqu'un a une piste qui fonctionne, je suis preneur.
 

Pièces jointes

  • guyd5469.xlsm
    76.1 KB · Affichages: 22
Solution
Re

Là, c'est plus explicite
La macro ci-dessous fonctionne si et seulement si
Enrichi (BBcode):
Sub mPourFeuille_FLI()
Dim c As Range, nb&
For Each c In Range("C:P").SpecialCells(xlCellTypeConstants, 2).Areas
Select Case c.Value
Case "I"
nb = c.Offset(3, -1).Value
c.Offset(11).Resize(nb).Copy
Sheets("FL_I").Cells(Rows.Count, 1).End(3)(2).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Select
Next
End Sub

Staple1600

XLDnaute Barbatruc
Bonjour le fil


On fait quoi des cellules où s'affiche un joli #VALEUR! ?
(et il y en a une palanquée)

Tu pourrais remplacer ta PJ avec le résultat à obtenir fait manuellement (sur une feuille avec un premier bloc de données à coller)
Histoire d'y voir plus clair.
Merci.
 

Staple1600

XLDnaute Barbatruc
Re

Pendant que mon thé infusait, que mon beurre baratté se mettait à température et que je faisais ma gymnastique du visage, j'ai commis ce petit bout de code.
VB:
Sub Macro1()
Dim rng As Range, vArr
Set rng = Sheets("CONFIG").Columns("C:C").SpecialCells(xlCellTypeFormulas, 23)
Application.ScreenUpdating = False
For i = 1 To rng.Areas.Count
vArr = rng.Areas(i).Offset(, 1).Resize(, 23).Value2
Sheets("FL_I").Cells(Rows.Count, 1).End(3)(2).Resize(UBound(vArr, 1), UBound(vArr, 2)) = vArr
Erase vArr
Next
Sheets("FL_I").Cells.EntireColumn.AutoFit
End Sub
Ca pourra te servir ou pas
Moi, ca m'a servi à commencer à me réveiller.
Ca y est mon thé est prêt
 

mapomme

XLDnaute Barbatruc
Bonjour à tous ,*
Bienvenue @guyd5469 ,



Çà pourra te servir ou pas
En tout cas, les explications de @guyd5469 nous ont peu guydé . Je sais, c'est pauvre mais je n'ai pas encore pris mon café/croissant qui va me mettre des miettes partout.


Moi, ça m'a servi à commencer à me réveiller.
Bon, tu es donc prêt pour la chasse aux œufs.

Ca y est mon thé est prêt
Un petit thé de la maison du thé bio ?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour mapomme

Ah! la rue Hoche, toute une histoire

Après le thé, l'apéro (ah non, il est encore trop)
Bon alors, un p'tit café en attendant Guydo

Ah, la chasse aux oeufs
L'enfant que je fus aimais bien
L'ado que je fus écoutait HFT causer du "crapaud qui gueulait..."
Le papa/tonton que je fus (je le suis encore mais ils ont grandis) faisait des blagues (recacher en douce des oeufs piqués en loucedé dans leurs petits paniers)
Mais je m'égare
Ah, ca y est mon café est prêt
 

guyd5469

XLDnaute Nouveau
Bonjour à tous.
Merci pour votre retour.
Les cases avec valeur ne servent à rien.
Effectivement, j'aurais du faire un exemple de ce que je souhaite.
Ci-joint sur les feuilles I et U. les cases avec "valeur" ne m'intéressent pas.
Faut que je modifie ma formule pour ne pas que ça apparaisse dans ma feuille config.
Visuellement ça fait dégueulasse.
Ne mangez pas trop de chocolat.
 

Pièces jointes

  • guyd5469.xlsm
    37.4 KB · Affichages: 10

Staple1600

XLDnaute Barbatruc
Re

Là, c'est plus explicite
La macro ci-dessous fonctionne si et seulement si
Enrichi (BBcode):
Sub mPourFeuille_FLI()
Dim c As Range, nb&
For Each c In Range("C:P").SpecialCells(xlCellTypeConstants, 2).Areas
Select Case c.Value
Case "I"
nb = c.Offset(3, -1).Value
c.Offset(11).Resize(nb).Copy
Sheets("FL_I").Cells(Rows.Count, 1).End(3)(2).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Select
Next
End Sub
 

guyd5469

XLDnaute Nouveau
Re

Petite question (avant d'ouvrir ton second fichier)
Est-ce que tu as pris le temps de tester la macro que je t'ai proposée?
Bien sûr, sinon j'aurais dit merci staple1600 et je ne me serais pas donné la peine d'en renvoyer un autre. Je suis sur téléphone, je testerais ça ce soir.
Je vois le code, et dans une de mes vaines tentatives qui ressemblait de loin (trèèèès loiiiiin) à ça, je comprend maintenant mes fais.
Juste c'est quoi la différence entre Cells et SpecialCells ?
 

Staple1600

XLDnaute Barbatruc
Re

Un merci est toujours le bienvenu
Mais un : j'ai testé ton code et
a) youpi ca marche
ou
b) ca marche pas ou ca ne produit le résultat recherché
apporte une petite information de plus

Pour la différence entre Cells et SpecialCells
Ouvre Excel et fais ALT+F11 puis F1
Ou cherche des infos dans l'aide en ligne de VBA
Parce que là présentement, il faut j'aille égoutter mon linge et étendre mes légumes
 

guyd5469

XLDnaute Nouveau
Je sais bien Staple et comme on s'y attendais, après avoir changé le nom de feuille et augmenté le nombre de colonne de P jusqu'à Z parceque j'avais allégé pour l'exemple, ta macro ne marchais pas dans mon fichier principal parceque :
- un décalage de 2 lignes sur la deuxième zone dû au offset de 11 = ajout de lignes pour conserver le même écart que la zone 1
- du texte sur les colonnes impaires(C, E,...) la ou elle cherche du numérique = supprimé
- des cellules fusionnées = supprimé
etc...
mais maintenant ça fonctionne, j'ai dupliqué/adapté et testé sur 2 feuilles de mon fichier principal et je valide ta solution.
Merci, je n'y serais pas parvenu tout seul de si tôt.
 

Discussions similaires

Réponses
32
Affichages
966
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…