Créer variable VBA sur Excel

  • Initiateur de la discussion Initiateur de la discussion Dietvert
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Dietvert

XLDnaute Nouveau
Bonjour,

J'ai essayé de trouver un post sur le formum qui parlerai de mon soucis, mais je n'en ai pas trouvé, veuillez m'excuser au cas ou un cas similaire aurait été traité.Je vais essayer d'être le plus explicite que possible.

Je souhaite créer une macro qui me permettrait d'automatiser l'exportation de données se trouvant dans quelques cellules, dans un tableau (onglet : Listensembles).

J'ai donc utilisé l'enregistreur automatique d'excel 2007, et j'arrive presque à ce que je veux mais je ne sais pas comment créer une variable car ma macro ne fonctionne que pour un seul onglet : PAIN AU RAISIN car c'est avec cet onglet que j'ai enregistré la macro.

Voici le code :
------------------------------------------------

' AjoutEnsemble Macro
'

'
Sheets("Listensembles").Select
ActiveWindow.SmallScroll Down:=-39
Rows("6:6").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A6").Select
ActiveCell.FormulaR1C1 = "='PAIN AU RAISIN'!R[-2]C[1]"
Range("B6").Select
ActiveCell.FormulaR1C1 = "='PAIN AU RAISIN'!R[-1]C"
Range("C6").Select
ActiveCell.FormulaR1C1 = "='PAIN AU RAISIN'!R[4]C[2]"
Range("D6").Select
ActiveCell.FormulaR1C1 = "='PAIN AU RAISIN'!R[1]C[1]"
Range("E6").Select
ActiveCell.FormulaR1C1 = "='PAIN AU RAISIN'!R[-2]C:R[-2]C[1]"
Range("A6:E6").Select
Range("E6").Activate
Selection.Font.Bold = False
Range("A6").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"'PAIN AU RAISIN'!A1"
End Sub
--------------------------------------------------

L'onglet PAIN AU RAISIN est une fiche dans laquelle il y a des donnés que je souhaite exporter automatiquement dans l'onglet Listensembles. Mon soucis c'est que j'ai environs 200 onglets dans lequel j'aurai à exporter les mêmes cellules !

Je pense ne pas être loin de la solution, mais je suis novice en VBA.
Je pense qu'il faudrait pouvoir remplacer :

='PAIN AU RAISIN'

par le nom de l'onglet de la fiche en cours.


Merci pour votre aide.🙂
 
Re : Créer variable VBA sur Excel

Bonjour,

Je ne suis pas sûr du tout, mais essaye tout de même ça si tu veux :

Ajoute Dim Onglet As String en début de macro.
Ajoute en suite Onglet = "PAIN AU RAISIN"
Remplace 'PAIN AU RAISIN' par Onglet
 
Re : Créer variable VBA sur Excel

Ok, merci je vais essayer !

Je te dis si ca marche !

J'ai intégré ce que tu m'as dis, mais lorsque je lance la macro, j'ai une boite de dialogue qui s'ouvre "Mettre à jour les valeurs : Onglet".

Voici la modif que j'ai faite :

-----------------

Sub test2()

' AjoutEnsemble Macro
'

'
Dim Onglet As String
Onglet = "PAIN AU RAISIN"
Sheets("Listensembles").Select
ActiveWindow.SmallScroll Down:=-39
Rows("6:6").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A6").Select
ActiveCell.FormulaR1C1 = "=Onglet!R[-2]C[1]"
Range("B6").Select
ActiveCell.FormulaR1C1 = "=Onglet!R[-1]C"
Range("C6").Select
ActiveCell.FormulaR1C1 = "=Onglet!R[4]C[2]"
Range("D6").Select
ActiveCell.FormulaR1C1 = "=Onglet!R[1]C[1]"
Range("E6").Select
ActiveCell.FormulaR1C1 = "=Onglet!R[-2]C:R[-2]C[1]"
Range("A6:E6").Select
Range("E6").Activate
Selection.Font.Bold = False
Range("A6").Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
"Onglet!A1"
End Sub

------------
 
Re : Créer variable VBA sur Excel

Bonjour,

Voici un morceau de code qui va déjà te faire aller plus loin:

Code:
'Pour chaque feuille dans l'ensemble des feuilles
For Each Sheet In Sheets
    'Si le nom de la feuille est différent de "Listensembles" exécuter la suite du code! Peut être te faudra t'il ajouter des feuilles supplémentaire à nier
    If Sheet.Name <> "Listensembles" Then
        Sheets("Listensembles").Rows("6:6").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A6").FormulaR1C1 = "='" & Sheet.Name & "'!R[-2]C[1]"
        Range("B6").FormulaR1C1 = "='" & Sheet.Name & "'!R[-1]C"
        Range("C6").FormulaR1C1 = "='" & Sheet.Name & "'!R[4]C[2]"
        Range("D6").FormulaR1C1 = "='" & Sheet.Name & "'!R[1]C[1]"
        Range("E6").FormulaR1C1 = "='" & Sheet.Name & "'!R[-2]C:R[-2]C[1]"
        Range("E6").Font.Bold = False
        ActiveSheet.Hyperlinks.Add Anchor:=Range("A6"), Address:="", SubAddress:="'" & Sheet.Name & "'!A1"
    End If
Next Sheet


Bien à toi,
 
Dernière édition:
Re : Créer variable VBA sur Excel

Bonjour,

Voici un morceau de code qui va déjà te faire aller plus loin:

Code:
'Pour chaque feuille dans l'ensemble des feuilles
For Each Sheet In Sheets
    'Si le nom de la feuille est différent de "Listensembles" exécuter la suite du code! Peut être te faudra t'il ajouter des feuilles supplémentaire à nier
    If Sheet.Name <> "Listensembles" Then
        Sheets("Listensembles").Rows("6:6").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("A6").FormulaR1C1 = "='" & Sheet.Name & "'!R[-2]C[1]"
        Range("B6").FormulaR1C1 = "='" & Sheet.Name & "'!R[-1]C"
        Range("C6").FormulaR1C1 = "='" & Sheet.Name & "'!R[4]C[2]"
        Range("D6").FormulaR1C1 = "='" & Sheet.Name & "'!R[1]C[1]"
        Range("E6").FormulaR1C1 = "='" & Sheet.Name & "'!R[-2]C:R[-2]C[1]"
        Range("E6").Font.Bold = False
        ActiveSheet.Hyperlinks.Add Anchor:=Range("A6"), Address:="", SubAddress:="'" & Sheet.Name & "'!A1"
    End If
Next Sheet


Bien à toi,


Je te remercie pour ce code, qui fonctione, c'est vraiment pas mal.

La seul chose c'est que si je lance la macro plusieur fois, il me fait des doublons. A moins que je suprime a chaque fois avant de lancer la macro.

En tout cas merci !!
 
Re : Créer variable VBA sur Excel

Mon idée n'était manifèstement pas parfaite... loin s'en faut !
Le problème devait venir des guillemets et peut-être qu'avec un truc du genre
ActiveCell.FormulaR1C1 = "='" & Onglet & "'!R[-2]C[1]"
ça aurait pu fonctionner, mais je ne suis même pas sûr...

Désolé. 🙁
 
Re : Créer variable VBA sur Excel

Mon idée n'était manifèstement pas parfaite... loin s'en faut !
Le problème devait venir des guillemets et peut-être qu'avec un truc du genre
ActiveCell.FormulaR1C1 = "='" & Onglet & "'!R[-2]C[1]"
ça aurait pu fonctionner, mais je ne suis même pas sûr...

Désolé. 🙁

Je te remercie pour ton aide, je vais essayer de voir ce que ça donne.

Thank
 
Re : Créer variable VBA sur Excel

Re,

Marcel ton idée était bonne, un très bon début... mais vu que sa variable change selon le nom de la feuille et qu'il a plus de 200 feuilles le but est qu'il ne doit pas à chaque fois entrer le nom de la feuille. Donc il faut automatisé les noms de feuilles avec une boucle...

Bien à toi,
 
Re : Créer variable VBA sur Excel

Re,

Marcel ton idée était bonne, un très bon début... mais vu que sa variable change selon le nom de la feuille et qu'il a plus de 200 feuilles le but est qu'il ne doit pas à chaque fois entrer le nom de la feuille. Donc il faut automatisé les noms de feuilles avec une boucle...

Bien à toi,

Oui, c'est bien ça pour les 200 feuilles, le but est de ne pas modifier à chaque fois le code.

Christophe, j'ai l'impression que cette commande ne fonctionne pas :

If Sheet.Name <> "Listensembles, Accueil, Articles, Fiche" Then
Sheets("Listensembles").Rows("6:6").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

car il me copie même les données de l'onglet Listensembles.
il y a d'autre onglet que je voudrais qu'il n'analyse pas, comment faire?

Merci
 
Re : Créer variable VBA sur Excel

Re,

Code:
If Sheet.Name <> "Listensembles" And Sheet.Name <> "Temp" Then

Ajoute les feuilles de cette façon...

Bien à toi,

SUPER GENIALE 🙂 ça fonctione, merci beaucoup christophe, je vais gagner un temps fou et surtout je ne vais eviter les erreurs !!

C'est vraiment chouette de trouver de bonne âme charitable.

Un grand merci 🙂🙂
 
Re : Créer variable VBA sur Excel

SUPER GENIALE 🙂 ça fonctione, merci beaucoup christophe, je vais gagner un temps fou et surtout je ne vais eviter les erreurs !!

C'est vraiment chouette de trouver de bonne âme charitable.

Un grand merci 🙂🙂

Salut Christophe, encore merci pour ce coup de pouce, j'ai pu améliorer ton code en fonction de mes besoins.

Cependant, est-il possible d'empêcher qu'il scan tous les onglets mis a part ceux que j'ai ecris, et aussi ceux qui commenceront commençant par un début de nom ?

Enfaite j'ai des onglets qui se génèrent automatiquement via une macro qui commence par INGREDIENT, mais que je ne voudrais pas avoir dans mon tableau.

Merci d'avance.
 
Re : Créer variable VBA sur Excel

Bonsoir dietvert,

Puisque Christophe à l'air absent, essaie avec ceci
Code:
If Sheet.Name <> "Listensembles" And Sheet.Name <> "Temp" And Left(Sheet.Name,10)<>"INGREDIENT" Then

Bonne soirée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
554
  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
863
Réponses
2
Affichages
522
Réponses
4
Affichages
253
Réponses
11
Affichages
777
Retour