Répeter une macro pour chacune de mes lignes
Fermé
marion25460
Messages postés
2
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
20 février 2015
-
Modifié par marion25460 le 19/02/2015 à 18:52
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 21 févr. 2015 à 15:21
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 21 févr. 2015 à 15:21
A voir également:
- Répeter une macro pour chacune de mes lignes
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro recorder - Télécharger - Confidentialité
- Site de vente en ligne particulier - Guide
2 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
19 févr. 2015 à 23:50
19 févr. 2015 à 23:50
Bonsoir Marion, bonsoir le forum,
Peut-être comme ça :
Peut-être comme ça :
Sub Macro1() Dim I As Integer For I = 12 To 2000 Range(Cells(I, 11), Cells(I, 13)).Copy Range(Cells(I + 3, 6), Cells(I + 5, 6)).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False Range(Cells(I + 3, 5), Cells(I + 5, 5)).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Cells(I, 9).Copy Range(Cells(I + 3, 5), Cells(I + 5, 5)) With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With Next I End Sub
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
Modifié par ThauTheme le 21/02/2015 à 13:30
Modifié par ThauTheme le 21/02/2015 à 13:30
Bonjour Marion, bonjour le forum,
En effet c'est plus clair mais un petit fichier exemple aurait été encore mieux...
Je te propose de passer par un second onglet pour renvoyer le trableau transposé :
À plus,
ThauTheme
En effet c'est plus clair mais un petit fichier exemple aurait été encore mieux...
Je te propose de passer par un second onglet pour renvoyer le trableau transposé :
Sub Macro1() Dim OS As Worksheet 'déclare la variable OS (Onglet Source) Dim OD As Worksheet 'déclare la variable OD (Onglet Destination) Dim DL As Integer 'déclare la variable DL (Dernière Ligne) Dim TL As Variant 'déclare la variable TL (Tableau de Ligne) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) Set OS = Sheets("Feuil1") 'définit l'onglet OS (à adapter) DL = OS.Cells(Application.Rows.Count, 9).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 9 (=I) de l'onglet OS Set OD = Sheets("Feuil2") 'définit l'onglet OD (à adapter) OD.Range("A1").Value = "Repère" 'écrit "Repère" en A1 de l'onglet OD OD.Range("B1").Value = "Fils" 'écrit "Fils" en B1 de l'onglet OD For I = 12 To DL 'boucle sur toutes les lignes I de 12 à DL 'définit le tableau de ligne TL (les Fils à partir de la colonne 10 (=J)) TL = OS.Range(OS.Cells(I, 10), OS.Cells(I, Application.Columns.Count).End(xlToLeft)) 'définit la cellule de destination DEST Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante) 'revoie dans DEST redimentsionnée et décalée d'une colonne à droite le tableau TL transposé 'si le tableau ne contient qu'un seul élément cela génère une erreur DEST.Offset(0, 1).Resize(UBound(TL, 2), 1).Value = Application.Transpose(TL) If Err <> 0 Then 'condition : si une erreur a été générée 'renvoie dans dest décalée d'une colonne à droite la valeur de la cellule ligne I colonne 10 (=J) DEST.Offset(0, 1).Value = OS.Cells(I, 10).Value GoTo suite 'va à l'étiquette "suite" End If 'fin de la condition DEST.Resize(UBound(TL, 2), 1).Merge 'fusionne la cellue DEST suite: 'étiquette On Error GoTo 0 'annule la gestion des erreurs DEST.Value = OS.Cells(I, 9) 'renvoie dans dest la valeur de la cellule ligne I colonne 9 (=I) Next I 'prochaine ligne de la boucle End Sub
À plus,
ThauTheme
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
21 févr. 2015 à 15:21
21 févr. 2015 à 15:21
Je me suis basé sur ton premier post cellule I12 (ligne 12, colonne 9)
Modifié par marion25460 le 20/02/2015 à 09:26
merci pour votre réponse aussi rapide !
Je n'arrive pas à faire fonctionner votre code !
je me réexplique car je me rend compte que ma demande n'etait pas clair !
J'ai un tableau avec en première colonne " un repère" dans les colonnes suivant il y à les fils qui sont associés à ce repère ( le tabbleau se lis donc en ligne)
exemple :
A B C D
repère 1 fils 1 fils 2 fils 3
repère 2 fils 56 fils 9
et cela sur environ 2000 lignes , car 2000 repères de fils
Note : il se peut qu'il y est 10 fils pour un repère comme 1 seul fils
Ce que je souhaiterais :
avoir en colonne A , toujours, les repères de fils et en colonne B tous les fils correspondant au repère. (le tableau doit se lire de bas en haut)
exemple :
A B
1 repère 1 fils 1
2 fils 2
3 fils 3
4 repère 2 fils 56
5 fils9
j'aimerais que les cellules A1,A2 et A3 soit fusionnées et que ce modèle s'applique pour chaque repère.
Je ne sais pas si j'ai réussis a etre clair, n'hésitez pas a me demander plus d'infos.
et me donner des conseils pour débuter le VBA. SVP
Merci