Macro Global ... As string/Integer
Résolu/Fermé
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
-
22 avril 2013 à 15:07
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 avril 2013 à 16:15
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 avril 2013 à 16:15
A voir également:
- Macro Global ... As string/Integer
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Macro recorder - Télécharger - Confidentialité
- Excel récupérer couleur cellule sans macro ✓ - Forum Bureautique
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
22 avril 2013 à 15:37
22 avril 2013 à 15:37
Bonjour,
Bon. Alors. On commence par la déclaration de ta variable. Remplace Global par Public, juste pour voir. Par contre, les variables Public sont à déclarer en tête de module.
Mais bon, je ne penses pas qu'il s'agisse de cela. En effet, tu déclares une variable en public si tu en as besoin dans d'autres procédures, d'autres modules. Là ce n'est pas le cas car tu l'utilises (apparemment mais je peux me tromper) dans la même Sub.
Donc, il te suffit de :
déclarer tes variables en dessous de "Sub a2_mise_en_forme()" et virer les guillemets pour pouvoir les utiliser :
Ensuite, évite tous tes Select. Le fait de sélectionner une feuille, cellule, ralentit l'exécution de ton code et ne sert à rien.
Donc remplace, par exemple :
par :
ou encore, remplace :
par :
!!! Attention ce code est dangereux si tu n'as rien en A3.......
Bon. Alors. On commence par la déclaration de ta variable. Remplace Global par Public, juste pour voir. Par contre, les variables Public sont à déclarer en tête de module.
Option Explicit Public Var1 As String, Var2 As Integer Sub 1() Dim Var3 As Byte ... End Sub Sub 2() ... End Sub etc...
Mais bon, je ne penses pas qu'il s'agisse de cela. En effet, tu déclares une variable en public si tu en as besoin dans d'autres procédures, d'autres modules. Là ce n'est pas le cas car tu l'utilises (apparemment mais je peux me tromper) dans la même Sub.
Sub a2_mise_en_forme() 'Définition des variables PériodeRI = InputBox("Quelle est la période du RI concernée (au format <<du mois de MM AAAA>>) ?", "Période de RI concercée") NomFichierRI = InputBox("Quel est le nom du fichier RI de Vivian ?", "Nom du fichier RI à traiter") '.............bla bla bla ton code ici 'C'est ici que je veux que ça fonctionne mais ce n'est pas le cas... La cellule affiche Range("O2").Select ActiveCell.FormulaR1C1 = "=NomFichierRI" End Sub
Donc, il te suffit de :
déclarer tes variables en dessous de "Sub a2_mise_en_forme()" et virer les guillemets pour pouvoir les utiliser :
Sub a2_mise_en_forme() 'Déclaration des variables Dim PériodeRI As String, NomFichierRI As String 'Définition des variables PériodeRI = InputBox("Quelle est la période du RI concernée (au format <<du mois de MM AAAA>>) ?", "Période de RI concercée") NomFichierRI = InputBox("Quel est le nom du fichier RI de Vivian ?", "Nom du fichier RI à traiter") '.............bla bla bla ton code ici 'C'est ici que je veux que ça fonctionne mais ce n'est pas le cas... La cellule affiche Range("O2").Value = NomFichierRI '.............bla bla bla ton code ici End Sub
Ensuite, évite tous tes Select. Le fait de sélectionner une feuille, cellule, ralentit l'exécution de ton code et ne sert à rien.
Donc remplace, par exemple :
Range("H1").Select ActiveCell.FormulaR1C1 = "Franchisés1" Range("i1").Select ActiveCell.FormulaR1C1 = "Franchisés2" Range("j1").Select ActiveCell.FormulaR1C1 = "Franchisés" Range("k1").Select ActiveCell.FormulaR1C1 = "Org Id" Range("l1").Select ActiveCell.FormulaR1C1 = "Business Account"
par :
Range("H1").Value = "Franchisés1" Range("i1").Value = "Franchisés2" Range("j1").Value = "Franchisés" Range("k1").Value = "Org Id" Range("l1").Value = "Business Account"
ou encore, remplace :
Range("a2").Select Selection.End(xlDown).Select lastli = ActiveCell.Row
par :
lastli = Range("a2").End(xlDown).Row
!!! Attention ce code est dangereux si tu n'as rien en A3.......
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 avril 2013 à 10:25
23 avril 2013 à 10:25
référence à toutes les cellules non vide de "O2" à "lastli" de la colonne K
Je ne comprends donc pas ce que tu souhaites afficher en Cellule O2...
- Le nombre de valeurs contenues en colonne K,
- la moyenne des valeurs de la colonne K?
etc...
Je ne comprends donc pas ce que tu souhaites afficher en Cellule O2...
- Le nombre de valeurs contenues en colonne K,
- la moyenne des valeurs de la colonne K?
etc...
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
23 avril 2013 à 10:39
23 avril 2013 à 10:39
en fait en O2 je veux afficher la formule =K:K&"/"&"050413" car le résultat devrait être égal à O2=690/050713 par exemple. Cette référence deviendra un numéro de facture par la suite dans le code car le but de cette macro c'est d'automatiser le traitement des données de l'onglet "Transaction_Register" afin d'alimenter les onglets qui se créent par entités et surtout les onglets "header" et "line". Mais la problématique c'est que en tapant la formule dans la cellule, on obtient l'affichage que je recherche. Mais avec mon code de départ (C[-4]...), la cellule affiche le résultat 690/050413=0.01360..... De plus, il me faut cette donnée dans toutes les celles de la colonne O pour lesquelles il y a une valeur différente de "rien" en colonne K:K.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 avril 2013 à 10:57
23 avril 2013 à 10:57
Essaye donc ceci :
Dim maVar As String, NomFichierRI As String NomFichierRI = InputBox("Quel est le nom du fichier RI de Vivian ?", "Nom du fichier RI à traiter") var = "=K:K" Range("O2") = var Range("O2") = Range("O2") & "/" & NomFichierRI
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
23 avril 2013 à 11:19
23 avril 2013 à 11:19
Super, ça fonctionne bien. Et si je veux le faire pour toutes les cellules allant de O2 à ma dernière cellule non vide?
J'ai tenté ce qui suit (où ai-je faux ?)
J'ai tenté ce qui suit (où ai-je faux ?)
Dim maVar As String, NomFichierRI As String NomFichierRI = InputBox("Quel est le nom du fichier RI de Vivian ?", "Nom du fichier RI à traiter") maVar = "=K:K" Sheets("Transaction_Register").Select If Range("a3").Value = "" Then lastli = Range("a2") Else: lastli = Range("a2").End(xlDown).Row End If Range("O2:O" & lastli) = maVar Range("O2:O" & lastli) = Range("O2:O" & lastli) & "/" & NomFichierRI Range("O2:O" & lastli).Select Selection.Copy Range("O2:O" & lastli).Select ActiveSheet.Paste Calculate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 avril 2013 à 11:53
23 avril 2013 à 11:53
Essaye ceci :
Dim maVar As String, NomFichierRI As String, lastli As Long, i As Long NomFichierRI = InputBox("Quel est le nom du fichier RI de Vivian ?", "Nom du fichier RI à traiter") maVar = "=K:K" Sheets("Transaction_Register").Select If Range("a3").Value = "" Then lastli = Range("a2") Else lastli = Range("a2").End(xlDown).Row End If Range("O2:O" & lastli) = maVar For i = 2 To lastli Range("O" & i) = Range("O" & i) & "/" & NomFichierRI Next
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
23 avril 2013 à 15:32
23 avril 2013 à 15:32
C'est parfait !!! Grand merci.
Mon souci a été résolu. A bientôt,
Cordialement,
Jean
Mon souci a été résolu. A bientôt,
Cordialement,
Jean
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 avril 2013 à 16:15
23 avril 2013 à 16:15
de rien.
A+
Franck
A+
Franck
22 avril 2013 à 16:02
Afin de mieux cerner ma problématique, j'aurai bien voulu joindre mon fichier Excel mais je ne vois pas comment faire... En fait la variable NomFichierRI et même la variable PériodeRI me serve autant dans le module "a2_mise_en_forme" mais également dans une autre module. J'ai en fait créé un module par Sub mais le but sera d'utiliser une fonction "Call" afin de relier les modules. Merci beaucoup pour la simplification du code, je n'ai jamais pensé à ça... comment je fais si je veux joindre une pièce ?
22 avril 2013 à 16:04
Tu va sur ce site créer un lien vers ton fichier et reviens ici coller ce lien dans une réponse.
Une sub par module est inutile et va t'embrouiller plus qu'autre chose......
22 avril 2013 à 16:44
Merci d'avance.
22 avril 2013 à 16:49
22 avril 2013 à 16:54
Remarque : les 2 macros utilisant tes variables étant regroupées dans le même module, tu n'as pas besoin de déclarer tes variables comme Public, Dim suffit, mais en tête de modul et en dehors de toute Sub ou Function.