Macro excel decalage colonne à droite
Résolu/Fermé
soniatouns777
Messages postés
16
Date d'inscription
mercredi 26 janvier 2011
Statut
Membre
Dernière intervention
26 février 2011
-
28 janv. 2011 à 09:07
soniatouns777 - 28 janv. 2011 à 11:50
soniatouns777 - 28 janv. 2011 à 11:50
A voir également:
- Macro excel decalage colonne à droite
- Déplacer une colonne excel - Guide
- Formule somme excel colonne - Guide
- Trier colonne excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 753
Modifié par pijaku le 28/01/2011 à 09:45
Modifié par pijaku le 28/01/2011 à 09:45
Bonjour,
Tu as plusieurs solutions pour résoudre ton problème.
Si tu le souhaites, tu peux placer ton code vba ici dans une réponse (n'oublie pas les balises "codes" à côté de souligné S) et on sera à même de te le corriger.
Sinon, disais je donc, tu peux utiliser :
1- Numéro de la première colonne vide à droite :
2- Issu de : cette excellente source...
- Dernière ligne renseignée de la feuille de calculs
3- Une boucle peut être également utilisée.
Pour boucler toutes les 4 colonnes :
"Laissez-moi deviner... Votre surnom, c'est «Bande Passante»? "
- Le Tribunal des flagrants délires- P.Desproges -
Tu as plusieurs solutions pour résoudre ton problème.
Si tu le souhaites, tu peux placer ton code vba ici dans une réponse (n'oublie pas les balises "codes" à côté de souligné S) et on sera à même de te le corriger.
Sinon, disais je donc, tu peux utiliser :
1- Numéro de la première colonne vide à droite :
Dim PremiereColonneVideADroite As Integer PremiereColonneVideADroite = Range("IV1").End(xlToLeft).Column + 1
2- Issu de : cette excellente source...
- Dernière ligne renseignée de la feuille de calculs
Dim Derlig As Long DerLig = Split(Worksheets("Feuil2").UsedRange.Address, "$")(4)- donne la lettre de la dernière colonne renseignée de la feuille de calculs
Dim Dercol As String Dercol = Split(Worksheets("Feuil2").UsedRange.Address, "$")(3)- Donne le numéro de la dernière Colonne de la feuille de calculs
Dim Dercol As Long Dercol = Range(Split(Worksheets("Feuil2").UsedRange.Address, "$")(3) & 1).column
3- Une boucle peut être également utilisée.
Pour boucler toutes les 4 colonnes :
Dim Col As Integer For Col = 1 To 37 Step 4 MsgBox Cells(1, Col).Address NextTu dis...
"Laissez-moi deviner... Votre surnom, c'est «Bande Passante»? "
- Le Tribunal des flagrants délires- P.Desproges -
soniatouns777
Messages postés
16
Date d'inscription
mercredi 26 janvier 2011
Statut
Membre
Dernière intervention
26 février 2011
1
28 janv. 2011 à 10:22
28 janv. 2011 à 10:22
bonjour pijaku, merci pour ta réponse
en fait j'ai déjà un debut de code (ca fait 3 jours que je suis dessus et je suis pas super calé), je dois ajouter une boucle à mon code et je ne sais pas comment !!
ci dessous mon code <Sub Macro()
Dim i As Integer
With Sheets("Tableau Fonctionnement")
i = .Range("C5").End(xlToRight).Column + 1
Sheets("Cumul Fonctionnement").Range("C5:F16").Copy
Sheets("Cumul Fonctionnement").Cells(6, i).PasteSpecial Paste:=xlFormats
.Range("C5:D15").Copy
Sheets("Cumul Fonctionnement").Cells(6, i + 1).PasteSpecial Paste:=xlPasteValues
.Range("D21:D31").Copy
Sheets("Cumul Fonctionnement").Cells(6, i + 2).PasteSpecial Paste:=xlPasteValues
.Range("D37:D47").Copy
Sheets("Cumul Fonctionnement").Cells(6, i + 3).PasteSpecial Paste:=xlPasteValues
End With
End Sub>
en fait j'ai déjà un debut de code (ca fait 3 jours que je suis dessus et je suis pas super calé), je dois ajouter une boucle à mon code et je ne sais pas comment !!
ci dessous mon code <Sub Macro()
Dim i As Integer
With Sheets("Tableau Fonctionnement")
i = .Range("C5").End(xlToRight).Column + 1
Sheets("Cumul Fonctionnement").Range("C5:F16").Copy
Sheets("Cumul Fonctionnement").Cells(6, i).PasteSpecial Paste:=xlFormats
.Range("C5:D15").Copy
Sheets("Cumul Fonctionnement").Cells(6, i + 1).PasteSpecial Paste:=xlPasteValues
.Range("D21:D31").Copy
Sheets("Cumul Fonctionnement").Cells(6, i + 2).PasteSpecial Paste:=xlPasteValues
.Range("D37:D47").Copy
Sheets("Cumul Fonctionnement").Cells(6, i + 3).PasteSpecial Paste:=xlPasteValues
End With
End Sub>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 753
28 janv. 2011 à 10:40
28 janv. 2011 à 10:40
Comme indiqué dans mon post précédent :
A essayer car je n'ai pas testé... et ne suis pas bien réveillé!!!
Pour placer du code ici, sélectionne le en entier et clique sur <> en haut de chaque réponse...
A essayer car je n'ai pas testé... et ne suis pas bien réveillé!!!
Dim i As Integer With Sheets("Tableau Fonctionnement") For i = .Range("C5").End(xlToRight).Column + 1 To .Range("C5").End(xlToRight).Column + 48 'ici 48 représente 4 x 12 mois ... à vérifier! i = .Range("C5").End(xlToRight).Column + 1 Sheets("Cumul Fonctionnement").Range("C5:F16").Copy Sheets("Cumul Fonctionnement").Cells(6, i).PasteSpecial Paste:=xlFormats .Range("C5:D15").Copy Sheets("Cumul Fonctionnement").Cells(6, i + 1).PasteSpecial Paste:=xlPasteValues .Range("D21:D31").Copy Sheets("Cumul Fonctionnement").Cells(6, i + 2).PasteSpecial Paste:=xlPasteValues .Range("D37:D47").Copy Sheets("Cumul Fonctionnement").Cells(6, i + 3).PasteSpecial Paste:=xlPasteValues Next i End With
Pour placer du code ici, sélectionne le en entier et clique sur <> en haut de chaque réponse...
salut pijaku
la macro s'exécute sans fin et toujours sur la même plage !!
merci encore de ton aide
la macro s'exécute sans fin et toujours sur la même plage !!
merci encore de ton aide
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 753
28 janv. 2011 à 11:31
28 janv. 2011 à 11:31
Bon, chez moi, la boucle s'arrête...
Toujours sur la même plage, étonnant...
De toutes façons, il y a pas mal d'erreur dans le code. En voici une :
Range("C5:F16").Copy
C5:F16 = 4 colonnes
Cells(6, i).PasteSpecial ---> ici on prends pour exemple i=1. On colle donc en A6, C5:F16, 4 colonnes
Range("C5:D15").Copy
Cells(6, i + 1).PasteSpecial ---> ici i+1=2, forcément... Or on devrait coller en colonne 5...
Faisons simple, enregistre une copie de ton classeur (en .xls, xl version 97-2003) sous un autre nom, remplace les données confidentielles dans cette copie par des chiffres et des lettres ou ce que tu veux et joins le nous, grâce à https://www.cjoint.com/ (tu va sur ce site, créer un lien vers ton fichier et reviens coller ce lien dans une réponse ici même).
Toujours sur la même plage, étonnant...
De toutes façons, il y a pas mal d'erreur dans le code. En voici une :
Range("C5:F16").Copy
C5:F16 = 4 colonnes
Cells(6, i).PasteSpecial ---> ici on prends pour exemple i=1. On colle donc en A6, C5:F16, 4 colonnes
Range("C5:D15").Copy
Cells(6, i + 1).PasteSpecial ---> ici i+1=2, forcément... Or on devrait coller en colonne 5...
Faisons simple, enregistre une copie de ton classeur (en .xls, xl version 97-2003) sous un autre nom, remplace les données confidentielles dans cette copie par des chiffres et des lettres ou ce que tu veux et joins le nous, grâce à https://www.cjoint.com/ (tu va sur ce site, créer un lien vers ton fichier et reviens coller ce lien dans une réponse ici même).