pnombre
-
5 mars 2014 à 10:49
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
5 mars 2014 à 19:17
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
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 5 mars 2014 à 11:02
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 Modifié par ucfoutu le 5/03/2014 à 11:42
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 Modifié par ucfoutu le 5/03/2014 à 11:51
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.
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.