Un code pour créer une boucle qui pourra décaler en colonnes

Bonjour chers membres!

Je cherche un code VBA qui me permettra de décaler les colonnes dans une boucle à chaque fois que la boucle se répète. Je sais faire le décalage de ligne,

mais je ne sais pas comment faire pour les colonnes.

j'espère m'être fait comprendre.

Excellement votre,

@Excellerateur

Bonjour, décaler revient à insérer des cellules :

- soit en descendant soit en se déplaçant à droite ou vers le bas.

-soit aprés avoir selectionné une ligne , une colonne ou une plage

Quelquels exemples :

'Décaler d'une cellule vers le bas la ligne de B4 à E4
 Range("B4:E4").Select
    Selection.Insert Shift:=xlDown

' Décaler vers la droite les cellules de la colonne F3 à F13.   
    Range("F3:F13").Select
    Selection.Insert Shift:=xlToRight

'Décaler la colonne entière C vers la droite ( elle devient donc la colonne D ) 
Columns("C:C").Select
    Selection.Insert Shift:=xlToRight

Merci @ Xmenpl

En effet ta réponse n'est pas male, mais est-ce que ton code ne va pas plutôt insérer une colonne vers la droite?

Moi je voudrais copier à chaque boucle la valeur de la cellule de droite comme tu l'as compris.

Et puis comment est-ce que je définirais la fin de la série de décalage?

En fait je me suis mal exprimé et merci de me l'avoir fait comprendre.

Je voudrai en fait sélectionner la cellule de la colonne de droite à chaque fois

Trouver la cellule de droite n'est pas forcément difficile mais il faudrait déjà savoir :

Comment vous trouver la cellule actuelle à parti de laquelle on devra interroger celle de droite ?

Un fichier exemple ou votre code vba serait déjà un mieux pour repondre correctement à la question.

Ok mercipour votre remarque.

Sub passif()

Dim repertoire As String
Dim passif As String
Dim fso As Object
Dim wb1 As Workbook
Dim wb4 As Workbook

Sheets("plus gros porteurs").Delete
Sheets("total rede").Delete
Sheets("Liquidité").Delete

Set wb1 = Workbooks("SETUP Luiquide")
Set fso = CreateObject("Scripting.FileSystemObject")
repertoire = "X:\Contrôle\Controle liquidité\"
passif = wb1.Sheets("SETUP").Range("M18").Value
Workbooks.Open Filename:=repertoire & passif

Set wb4 = ActiveWorkbook
wb4.Sheets("plus gros porteurs").Copy After:=wb1.Sheets("Fixed Income")
wb4.Sheets("total rede").Copy After:=wb1.Sheets("Fixed Income")
wb4.Sheets("Liquidité").Copy After:=wb1.Sheets("Fixed Income")
wb4.Close savechanges:=False

'DEC
Sheets("DEC").Range("Y14", "Z18").ClearContents

If Sheets("plus gros porteurs").Range("B4").Value = "Dorval Convictions" Then

Sheets("plus gros porteurs").PivotTables("Tableau croisé dynamique15").PivotFields("Nom du Compte Titre").AutoSort xlDescending, "Somme de Encours Fin de Periode", Sheets("plus gros porteurs").PivotTables("Tableau croisé dynamique15").PivotColumnAxis.PivotLines(1), 1
[COLOR=rgb(184, 49, 47)]Sheets("plus gros porteurs").Range("A5", "A9").Copy[/COLOR]
Sheets("DEC").Range("Y14").PasteSpecial xlPasteValues
Sheets("plus gros porteurs").[COLOR=rgb(85, 57, 130)]Range("B5", "B9").Copy[/COLOR]
Sheets("DEC").Range("Z14").PasteSpecial xlPasteValues
Sheets("DEC").Range("Z1") = Application.WorksheetFunction.SumIf(Sheets("Inventaire").Columns("E"), Sheets("DEC").Range("Y2"), Sheets("Inventaire").Columns("AG"))

End If

'decp
Sheets("decp").Range("Y14", "Z18").ClearContents
If Sheets("plus gros porteurs").Range("C4").Value = "Dorval Convictions PEA" Then
Sheets("plus gros porteurs").PivotTables("Tableau croisé dynamique15").PivotFields("Nom du Compte Titre").AutoSort xlDescending, "Somme de Encours Fin de Periode", Sheets("plus gros porteurs").PivotTables("Tableau croisé dynamique15").PivotColumnAxis.PivotLines(2), 1
[COLOR=rgb(226, 80, 65)]Sheets("plus gros porteurs").Range("A5", "A9").Copy[/COLOR]
Sheets("decp").Range("Y14").PasteSpecial xlPasteValues
Sheets("plus gros porteurs").[COLOR=rgb(85, 57, 130)]Range("C5", "C9").Copy[/COLOR]
Sheets("decp").Range("Z14").PasteSpecial xlPasteValues
Sheets("decp").Range("Z1") = Application.WorksheetFunction.SumIf(Sheets("Inventaire").Columns("E"), Sheets("decp").Range("Y2"), Sheets("Inventaire").Columns("AG"))
End If

Ceci n'est en effet qu'une partie du code.

Je me suis limité à 'DEC et 'decp car il faisait la même chose à chaque fois, à savoir copier/coller les ranges "A5", "A9" puis copier coller les ranges "B5", "B9" (ça c'est sur DEC) puis sur 'decp il faisait la même chose en range "A5" "A9" sauf qu'il décalait et prenait la cellule de droite à savoir "C5", "C9" et ainsi de suite autant de fois qu'il n'y avait de colonnes à copier et coller.

Mais les limites de cette méthode réside dans le fait que si dans l'extraction avant d'obtenir notre tcd on avait une colonne qui s'ajoutait ou alors que l'ordre des colonnes avait changé alors le code qui était là avant ne marche pas.

Mon but est de créer une boucle et ayant des références aux cellules plutôt que des cellules en dur et en faisant varier (vers la droite) les cellules à copier/coller à chaque fois.

J'espère que vous comprenez un peu cette fois.

Salut l'équipe!

Je viens de joindre un fichier Excel pour illustrer mon propos.

En effet je cherche à créer une macro VBA qui fera une boucle qui va dans chaque cycle faire un tri (du plus grand au plus petit) sur les colonnes "C", "D", "E", "F", "G", et "H".

Puis en 2nde étape je veux que le code copie la liste des 4 premières cellules de la colonne "A" donc les range("A3:A6") et la colle sur une autre feuille (feuille A, range(("A3:A6"), puis sur la feuille Calculs ratios vient copier la liste triée en colonne "C" et la colle à la suite de la copie précédente (sur feuille A, range("B3:B6")).

Puis par la suite sur la feuille Calculs ratios, après avoir fait le tri (du plus grand au plus petit) sur la colonne "D" on copie encore les range("A3:A6") que l'on colle sur la feuille A en range(("D3:D6"), ensuite on revient sur la feuille Calculs ratios, on copie la liste triée en colonne "D" et la colle à la suite de la copie précédente (sur feuille A, range("E3:E6")).

Et ainsi de suite jusqu'à remplir les 6 tableaux en feuille A. Sur le modèle réel chaque tableau à créer est sur un autre onglet et il y a bien plus de 6 tableaux à créer d'où tout l'intérêt d'un code.

Le fait de trier du plus grand au plus petit à chaque fois change l'ordre des intitulés en colonne "A" donc j'ai réellement besoin de créer une boucle pour cela.

Vous pouvez vous servir du fichier pour le comprendre.

Merci d'avance de votre attention.

Excellemment votre.

Bonjour Excellerateur

Merci de lire la charte du forum [A LIRE AVANT DE POSTER] et notamment

  • Ne postez pas la même question sur un autre forum pour éviter de faire perdre bêtement du temps aux membres sur un problème qui peut être déjà résolu sur l'autre forum. L'inverse est également valable, si vous avez déjà posé votre question sur un autre forum, ne créez pas un doublon sur ce forum (à moins d'avoir clôturé le sujet sur l'autre forum).

Dernier rappel !

Rechercher des sujets similaires à "code creer boucle qui pourra decaler colonnes"