Problème avec autofill

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

je me permets de vous écrire concernant un peit problème avec la fonction autofill et plus particulièrement avec la fonction range:

J'aimerais insérer un nombre de colonne suivant une variable rentrée par l'utilisateur ainsi que de copier:coller les formules de la première colonne suivant cette variable.

Voila mon bout de code
Private Sub CommandButton1_Click()

Dim nb_col As Integer
nb_col = Range("C8").Value
Columns("E:E").Select
For i = 1 To nb_col - 2
Selection.Insert Shift:=xlToRight
Next

Range("D4:D75").Select
Selection.AutoFill Destination:=Range("D4:D" & nb_col), Type:=xlFillDefault

End Sub

La fonction range de l'autofill me pose problème , je ne sais pas comment indexer l'autofill suivant le variable préalablement déclarée.

Sachant que l'insertion des colonnes se fait entre la première colonne et la dernière colonne afin que ma colonne totaux conserve la somme entre la première et la dernière.

Je vous remercie par avance

4 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
Je commence par déplacer cette discussion vers le sous-forum adéquat (VBA). VB6 n'est pas VBA.
Merci de prêter attention à ce choix lors de l'ouverture de prochaines discussions relatives à VBA.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
1) Un peu de sémantique est salutaire (bonne appréhension de ce que l'on fait, finalement)
Range n'est pas une "fonction", mais un objet Excel (une plage d'une ou plusieurs cellules).
AutoFill n'est pas une fonction (ne retourne rien) , mais une méthode
2) il n'est pas adroit de travailler à coups de select, selection, etc ... Il est bien plus concis, orthodoxe et agile de travailler directement sur les objets Excel



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Je suis assez perplexe car tu veux appliquer, après insertions de colonnes, une méthode ) à une colonne (la D) restée identique puisque les insertions sont sur sa droite !
Applique donc avant les insertions de colonnes !

Et d'autre part : la méthode autofill ne saurait concerner deux colonnes (E et D) distinctes).

Explique en détail ce que tu veux exactement faire.
Je suis désolé si je ne suis pas clair et je suis encore un débutant en VBA.

L'utilisateur rentre le nombre de mois de location d'une centrale à béton et la gestion suit les dépenses chaque mois.

Je veux donc créer x nombre de colonne suivant le nombre de mois renseigné et appliqué les formules présente dans la première colonne ( location , coût des agrégats etc ) à chaque colonne en incrémentant les suivantes afin de créer le décalage de mois : janv , février , mars etc

J'insérer ces colonnes entre le premier mois et le dernier mois afin que ma colonne totaux puisse sommer toutes les lignes vu que j'insérer entre ces deux colonnes.

si je vais enregistrer une macro cela me donne

Sub Macro1()
'
' Macro1 Macro
'

Columns("E:L").Select
Range("E4").Activate
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D4:D75").Select
Selection.AutoFill Destination:=Range("D4:L75"), Type:=xlFillDefault
Range("D4:L75").Select
ActiveWindow.SmallScroll Down:=-93
End Sub


J'essaye juste d'introduite une variable ( le nombre de mois , le nb_col de ma formule dans la fonction autofill à la place du Range("D4:L75") qui marche pour 10 mois dans ce cas présent.

merci d'avance :)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
je t'ai demandé plus haut de cesser de travailler )à coups de select, selection, activate, etc ...
par exemple : tes instructions :
Columns("E:L").Select
Range("E4").Activate
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
(où on se demande d'ailleurs à quoi sert l'activation de la cellule E4 !)
ne font rien d'autre que cette instruction toute simple :
Columns("E:L").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Pour le reste : ne me parle s'im te plait ni de "location", ni d'"agrégats", ni de "mois", etc ...mais de cellules et de plages de cellules (techniquement, donc). Car ce sont des cellules et des plages que nous allons manier, que leurs valeurs concernent des cacahuètes ou des navets.