Sélection cellules + insertion formule en VBA

Bonjour à tous,

Je recherche le moyen de sélectionner une plage de cellules et de faire appliquer à ces cellules la même formule et le tout dans une codification en vba.

voici mon code :

Private Sub CommandButton21_Click()

Sheets("Feuil 3").Select

Columns("D").Select

Selection.Insert

Cells("C13:C67").Select

Range("C13:C67").FormulaLocal = "=INDIRECT("F1"&"!A14")"

Range("D13:D67").FormulaLocal = "=SI(NB.SI(C:C;B13);B13;"""")"

Dim Cel As Range

Dim myRange As Range

Set myRange = Range("D13:D67")

For Each Cel In myRange

Cel.FormulaLocal = Cel.Value

Next Cel

Columns("C:C").Delete Shift:=xlToLeft

End Sub

En rouge, là où mon code ne marche pas : "erreur de compilation : erreur de syntaxe".

Je précise juste que ma cellule F1 est une liste déroulante comportant le nom de tous les onglets.

Merci pour toute aide.

Cordialement

Bonjour,

Ce n'est pas plutôt un range("C13:C67").Select au lieu d'un Cells("C13:C67").Select

et ensuite Selection.formula.....

Cordialement

Merci pour ta réponse.

Voici le code désormais :

Private Sub CommandButton21_Click()

Sheets("Feuil 3").Select

Columns("D").Select

Selection.Insert

Range("C13:C67").Select

Selection.Formula = "=INDIRECT("F1"&"!A14")"

ActiveCell.FormulaR1C1 = Formule

Range("D13:D67").FormulaLocal = "=IF(COUNTIF(C:C;B13);B13;"""")"

Dim Cel As Range

Dim myRange As Range

Set myRange = Range("D13:D67")

For Each Cel In myRange

Cel.FormulaLocal = Cel.Value

Next Cel

Columns("C:C").Delete Shift:=xlToLeft

End Sub

En fait je ne sais pas si je m'y prend de la même manière mais je voudrais qu'en fonction de la valeur que j'aurais choisi en F1 (liste représentant l'ensemble des noms de mes onglets), que la fonction me copie la valeur A14 de la feuille en C13 et ainsi de suite, A15 en C14... jusqu'à A43 en C42.

Exemple : F1 : "Feuil 8" ; Copier les valeurs de A14:A43 en Feuil 3 C13:C42

Autre précision F1 se trouve en Feuil 3

Je crois que l'erreur de syntaxe est dûe à "&" mais après je ne saurais comment remplacer la formule.

Merci bien

J'ai avancé au niveau du code mais j'ai encore une ligne qui bloque.

Private Sub CommandButton21_Click()

Sheets("Feuil 3").Select

Columns("D").Select

Selection.Insert

Range("C13:C67").Select

Dim NomVariable

NomVariable = Range("F1").Value

Sheets("NomVariable").Select

Range("A14:A43").Select

Selection.Copy

Sheets("feuil 3").Select

Range("C13:C42").Select

Il me manque encore la fonction collage ici

Range("D13:D67").FormulaLocal = "=IF(COUNTIF(C:C;B13);B13;"""")"

Dim Cel As Range

Dim myRange As Range

Set myRange = Range("D13:D67")

For Each Cel In myRange

Cel.FormulaLocal = Cel.Value

Next Cel

Columns("C:C").Delete Shift:=xlToLeft

End Sub

Bonjour,

La ligne qui est en rouge correspond surement à une mauvaise déclaration:

Dim NomFeuille As Worksheet

Sheets.Add

ActiveSheet.Name = Feuil1.Range("F1")

Pour l'autre que veux-tu coller?

Les valeurs, ou les formules, ou quoi?

Private Sub CommandButton21_Click()

Sheets("Feuil 3").Select

Columns("D").Select

Selection.Insert

Dim NomFeuille As Worksheet

Sheets.Add

ActiveSheet.Name = Range("F1")

Sheets(NomFeuille).Select

Range("A14:A43").Select

Selection.Copy

Sheets("Feuil 3").Select

Range("C13:C42").Select

ActiveSheet.Paste

Range("D13:D67").FormulaLocal = "=IF(COUNTIF(C:C;B13);B13;"""")"

Dim Cel As Range

Dim myRange As Range

Set myRange = Range("D13:D67")

For Each Cel In myRange

Cel.FormulaLocal = Cel.Value

Next Cel

Columns("C:C").Delete Shift:=xlToLeft

End Sub

Je veux uniquement coller les valeurs (valeurs non chiffrés si jamais).

Problème avec cette formule là : elle me rajoute bien une colonne mais après, cette macro me crée une nouvelle feuille vierge devant Feuil 3.

Compliqué de se comprendre.

Que voulez-vous faire au juste?

Le mieux serait de joindre le fichier pour plus de clarté avec des demandes plus précises.

Cordialement

Voila le fichier joint.

Objectif c'est que dans la feuille PRIX DE VENTE RAYON, on retrouve toutes les références des autres onglets.

Donc ça c'est bon.

Ensuite grâce à la liste déroulante en PRIX DE VENTE RAYON cellule F1, choisir une référence. Cette référence complètera automatiquement les données du haut du tableau grâce à une fonction indirect avec les autres feuilles.

Objectif :

Je veux coller les valeurs de A14:A43 en fonction de la valeur de la cellule F1 (donc de la feuille choisie)

Dans les cellules C13:C42 de la feuille PRIX DE VENTE RAYON.

Donc dans ma macro j'ajoutais une colonne pour que les données provenant de la page autre que PRIX DE VENTE RAYON soient triées et que les valeurs soient mises au même niveau de ligne que la colonne B de PRIX DE VENTE RAYON.

Exemple :

COTE ENTRECOTE COTE x

ENTRECOTE HACHE --> ENTRECOTE ENTRECOTE

FAUX FILET FAUX FILET x

HACHE HACHE HACHE

Ensuite figer les valeurs (pour mettre fin aux liaisons) et supprimer la colonne où on avait coller les valeurs à la base.

Alors là du coup, ça devient beaucoup plus compliqué ainsi on dirait.

11test.xlsm (67.54 Ko)

Re,

Il m'a fallu un peu de temps pour comprendre ta demande.

Désormais, le fait de modifier la cellule F1 déclenche la macro CopieLesPlages que tu trouveras dans le module2.

J'ai donc supprimer le bouton qui déclenchait la macro.

Je n'ai pas entièrement saisi l'objectif de cette manipulation mais si elle te convient c'est l'essentiel.

Bon courage

ddetp88

Parfait, ça correspond à ce que je recherchais.

Merci l'ami pour ton travail et pour le temps que tu y as consacré!

Cordialement

Pense à clôturer le sujet.

Merci

Rechercher des sujets similaires à "selection insertion formule vba"