[Vb] Macro sous excel besoin d'aide

Fermé
vts8v - 22 mars 2005 à 18:36
 vts8v - 24 mars 2005 à 12:10
Tout d'abord bonjour.

Je suis un débutant dans le langage Visual basic.

Par contre j'ai pris des informations sur le net et aussi j'ai créé des macros manuellement avec l'enregistreur de macro, ce qui m'a permis de comprendre certaines choses.

J'ai un souci.
J'ai un graphique sur une "feuille2" qui va chercher des données sur un tableau sur une "feuille1".
Ce graphique est une courbe avec en abscisse une colonne de la feuille1 et en ordonnée une autre colonne de la feuille1.


Mon souci c'est qu'en faite les données que je récupère pour mon graphique ne doivent pas contenir de valeur nulles (cellule sans valeurs).

Donc pour mon graphique j'ai la formule suivante "=SERIE(feuille1!B$1$:B$20$;feuille2!D$1$:D$20$)
En gros ca ressemble à ca. Ca récupère les valeurs des colonnes B et D et des lignes 1 à 20.
Le problème c'est que toutes les lignes ne possèdent pas forcément de valeur.
Par contre dès qu'une cellule n'a pas de valeur, les cellules suivantes non plus n'en auront pas.
ex : ligne 1,2,3,4 avec des données, par contre ligne 5 sans données, les lignes suivantes seront vides


J'aimerais qu'en faite, la macro fasse :
Tant qu'une cellule <> " "
Alors ajouter à la sélection la cellule

"Dès qu'une cellule est vide
Alors le programme s'arrête"

Et ca écrit la formule.
Par exemple si ca s'arrete à la ligne 4 j'aimerais que la formule "=serie, etc..." soit mis à jour.

En faite je cherche une macro qui créé une formule pour le graphique qu'avec des cellules non vides.


Autre petit souci.
Comment faire intervenir une variable.

Par exemple :

dim var1
var 1 = bonjour
msgbox "var1"

Cela m'affiche "var1" et pas "bonjour", y a til un "$" a placer ?

Merci de m'éclairer.
A voir également:

8 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 691
22 mars 2005 à 22:37
bonsoir

dim var1
var 1 = bonjour
msgbox "var1"


tu as un problème de syntaxe car il faut écrire :
dim var1
var1 =" bonjour"
msgbox var1


et là çà fonctionne car les guillemets entourent
un libelle mais pas une variable.


"=SERIE(feuille1!B$1$:B$20$;feuille2!D$1$:D$20$)

pour trouver la dernière cellule non vide tu as :
Dim lig1, lig2
lig1 = Worksheets("feuil1").Range("B1").End(xlDown).address
lig2 = Worksheets("feuil1").Range("D1").End(xlDown).address

puis l'utilisation :
"feuille1!B$1$:" & lig1 & ";feuille2!D$1$:" & lig2

c'est bon ?
sinon continue tes questions.

0
je te remercie, je vais déjà essayer d'avancer avec ce que tu m'as donné. Merci beaucoup.
0
J'ai un autre problème.

En faite voici le programme :

dim lig1, lig2

lig1 = Worksheets("getHistoricPortfolioNetvalue1").Range("C2").End(xlDown).Adress
lig2 = Worksheets("getHistoricPortfolioNetvalue1").Range("E2").End(xlDown).Adress


' Ensuite la modification de la formule, je l'ai faite de cette facon, j'ai enregistré une macro et j'ai modifié la formule à la main, j'ai récupéré le code


ActiveChart.SeriesCollection(1).Formula = _
"=SERIES('reporting mensuel'!R51C9,getHistoricPortfolioNetvalue1!R2C3:R23C3,gethistoricPortfolioNetValue1!R2C5:R23C5,1)"


J'ai mis les vrais noms des feuilles.

Y a quelque chose que je comprend pas, pourquoi ce format R51C9 ???? et pas J51 ?
Ensuite la formule n'accepte pas le format de type B1.

Dernière question la syntaxe exacte pour placer une variable dans un code entre "" est - "bonjour je m'appelle "&var1&"" - ??? Parce que j'ai essayé plusieurs combinaises mais y a un problème avec les ""
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 691
23 mars 2005 à 14:44
bonjour

ton tableau est en notation L1C1 et donc récupére la ligne(row) :

lig1 = Worksheets("getHistoricPortfolioNetvalue1").Range("C2").End(xlDown).row
lig2 = Worksheets("getHistoricPortfolioNetvalue1").Range("E2").End(xlDown).row


ActiveChart.SeriesCollection(1).Formula = _
"=SERIES('reporting mensuel'!R51C9,getHistoricPortfolioNetvalue1!R2C3:R" & lig1 & "C3,gethistoricPortfolioNetValue1!R2C5:R" & lig1 & "C5,1)"

"bonjour je m'appelle "&var1&""

"bonjour je m'appelle " & var1

le guillemet entoure le libellé et & (entre 2 espaces)
associe les libelles et les variables :

cells(1,1).value = "Je m'appelle " & varnom & " et j'ai " & varage & " ans"

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lorsque j'exécute la macro de nouveau, ca me dit variable objet non défini ou variable with non défini, c'est un message d'erreur de ce type.
Ca te dit quelque chose ?

J'ai une question pourquoi le tableau est en notation row ?
Et pourquoi des fois il y a B1 et B$1$, que signifie les "$" ?
0
J'ai compris mon erreurrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr !!

En faite j'ai mis une commande qui m'oblige à sélectionner le graphique avec la souris si je souhaite faire des modifs.
Je me disais bien, comment la macro arrive a distinguer le graphique sur lequel elle doit modifier la formule. (jai rectifié ce problème)

Voici ma formule finale mais y a un autre message d"erreur :

"Impossible de définir la propriété formula pour la classe series"


Voici mon code source :



Sub Macro6()


' Macro6 Macro
' Macro enregistrée le 22/03/2005 par wfrp
'

Dim lig1, lig2
lig1 = Worksheets("getHistoricPortfolioNetValue1").Range("C2").End(xlDown).Address
lig2 = Worksheets("getHistoricPortfolioNetValue1").Range("E2").End(xlDown).Address




ActiveSheet.ChartObjects("Graphique 46").Activate

ActiveChart.SeriesCollection(1).Formula = _

"=SERIES('reporting mensuel'!R51C9,getHistoricPortfolioNetValue1!R2C3:R" & lig1 & "C3,getHistoricPortfolioNetValue1!R2C5:R" & lig2 & "C5,1)"

End Sub


Je sens qu'on est proche du but.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 691
23 mars 2005 à 19:18
bonjour

ton tableau est en notation L1C1 et donc récupére la ligne(row) :

lig1 = Worksheets("getHistoricPortfolioNetvalue1").Range("C2").End(xlDown).row
lig2 = Worksheets("getHistoricPortfolioNetvalue1").Range("E2").End(xlDown).row

Dans le message 4, tu n'a pas tenu compte de cette information.

comme tu es en notation L1C1, il ne faut pas récupérer l'adresse
mais seulement la ligne.

bon courage.

0
Mission accomplie.


J'ai une deuxième macro à réaliser.
Si tu aurais des sites en francais qui pourrait m'aider également ca m'évite de te déranger.


Ma deuxième macro doit prendre la dernière cellule de la colonne C3 c'est une colonne ou il n'y a que des dates.
Et j'aimerais avoir une variable qui retire 3 mois au résultat de la dernière cellule.

Dim lig3, lig4
lig3 = worksheetsxxC3xx.Address
lig4 = lig3 - 3 mois => cette ligne pose problème, j'ai réussi à soustraire des jours mais pas des mois.

Merci d'avance.
0