SuppotDeSaTante Aka dje69r | Donc pour la 1ere question :
Code :
- Sub toto()
- 'On declare notre variable de type classeur
- Dim NouvClasseur As Workbook
- 'on attribue le classeur à ouvrir a cette variable et en meme temps on l'ouvre.
- Set NouvClasseur = Application.Workbooks.Open("C:\Test.xls" )
- 'Derriere on peut donc utiliser notre variable comme si c'etait notre classeur
- 'L'instruction With permet de faire reference a un objet ou une variable. Derriere on n'a plus besoin de repeter _
- variable, un point suffit
- 'Le point permet d'acceder a la valeur d’une propriéte d’un objet particulier en écrivant Objet.propriété
- With NouvClasseur
- .Sheets("Feuil1" ).Range("A1" ) = "toto"
- .Sheets("Feuil1" ).Range("A1" ).Font.Color = -16776961
- 'etc.
- End With
- End Sub
|
J'ai argumenté mon code pour que tu "piges" le principe.
Après je ne comprends pas la phrase : Citation :
Or, pour des raisons de mises à jour, il me faut faire le lien directement vers Tableau1.xls feuille Total. Donc, je souhaiterai mettre le chemin de ce lien dans une variable pour n'avoir à modifier le chemin qu'une fois si les classeurs changent de place sur le serveur.
|
En gros tu veux qu'une cellule du second classeur pointe sur le premier ?
Si tel est le cas :
Code :
- Sub toto()
- 'On declare notre variable de type classeur
- Dim Tableau1 As Workbook, Tableau2 As Workbook
- Dim NomTableau1 as String, NomTableau2 as String, CelluleSource as string, CelluleCible as string
- NomTableau1 = ActiveWorkbook.Name 'on recupere le nom du document ouvert sur lequel on est positionné, donc Tableau1 (sans ".xls" )
- CelluleSource = "B1" 'La cellule qui va etre utilisé comme source
- NomTableau2 = "C:\Tableau2.xls"
- CelluleCible = "A1" 'la cellule qui utiliser la cellule source comme... source... :-D
- 'on attribue le classeur à ouvrir a cette variable et en meme temps on l'ouvre en utilisant la variable chaine NomTableau2
- Set Tableau2 = Application.Workbooks.Open(NomTableau2)
- 'On utilise le point comme vu plus haut avec With _
- 'Et on va inserer une formule du type =[Tableau1]Feuil1!$A$1
- With Tableau2
- .Sheets("Total" ).Range(CelluleCible ).Formula = "=[" & NomTableau1 & "]!Total" & CelluleSource 'on utilise la propriété Formula pour dire qu'on va inserer une formule dans notre cellule cible, et dedans on va concatener la syntaxe pointant vers une cellule d'un classeur avec la chaine CelluleSource
- 'etc.
- End With
- End Sub
|
Ou encore en parametrant le nom du Tableau1
Code :
- Sub toto()
- 'On declare notre variable de type classeur
- Dim Tableau1 As Workbook, Tableau2 As Workbook
- Dim NomTableau1 As String, NomTableau1_SSChemin As String, NomTableau1_Chemin As String, NomTableau2 As String, CelluleSource As String, CelluleCible As String
- NomTableau1 = "C:\Tableau1.xls"
- 'on recupere juste le nom de NomTableau1 en enlevant le chemin car on a besoin de separer chemin et nom du classeur pour les formules. _
- Les formules faisant reference a un classeur avec un chemin sont de ce type : ='C:\[test.xls]Feuil1'!A1
- 'Et on va utilise la propriété Formula pour mettre une formule de ce type dans notre cellule
- For x = Len(NomTableau1) To 1 Step -1
- If Mid(NomTableau1, x, 1) <> "\" Then
- NomTableau1_SSChemin = Right(NomTableau1, Len(NomTableau1) - (x - 1))
- Else
- Exit For
- End If
- Next x
- 'on en recupere le chemin
- NomTableau1_Chemin = Left(NomTableau1, Len(NomTableau1) - Len(NomTableau1_SSChemin))
- CelluleSource = "B1" 'La cellule qui va etre utilisé comme source
- NomTableau2 = "C:\Tableau2.xls"
- CelluleCible = "A1" 'la cellule qui utiliser la cellule source comme... source... :-D
- 'on attribue le classeur à ouvrir a cette variable et en meme temps on l'ouvre en utilisant la variable chaine NomTableau2
- Set Tableau2 = Application.Workbooks.Open(NomTableau2)
- 'On utilise le point comme vu plus haut avec With _
- 'Et on va inserer une formule du type ='C:\[test.xls]Feuil1'!A1
- With Tableau2
- .Sheets("Total" ).Range(CelluleCible ).Formula = "='" & NomTableau1_Chemin & "[" & NomTableau1_SSChemin & "]!Total'!" & CelluleSource 'on utilise la propriété Formula pour dire qu'on va inserer une formule dans notre cellule cible, et dedans on va concatener la syntaxe pointant vers une cellule d'un classeur avec la chaine CelluleSource
- 'etc.
- End With
- End Sub
|
Pour la seconde question, je ne pige toujours pas pourquoi tu veux passer par des variables. Tes 48 variables, si je ne m'abuse, doivent correspondrent aux 48 colonnes de la feuille Total non ?
Donc pas besoin de variable. Enfin je pense etant donné qu'une cellule est une reference du croisement entre une ligne (Row) et une colonne (Column), et que tu peux valoriser ces deux propriétés...
Imaginons un tableau de deux colonnes et 50 lignes, pour passer sur chaque cellule :
Code :
- For x = 1 to 2
- For y = 1 to 50
- 'ici a va prendre tour a tour les valeur de A1, A2, A3 etc. Puis B1, B2 etc.
- A = Cells(Y,X).value
- 'donc tu peux mettre un test du genre si la cellule contient toto, par ex A1, qu'il marque le message "La cellule A1 contient Toto"
- If Cells(Y,X).value = "Toto" then Msgbox "La cellule " & Cells(Y,X).Address & " contient Toto"
- Next y
- Next x
|
Tu peux aussi utiliser le Select, l'equivalant du Switch de Php
Code :
- For x = 1 to 2
- For y = 1 to 50
- Select Case Cells(Y,X).Value
- Case "toto"
- Msgbox "La cellule " & Cells(Y,X).Address & " contient Toto"
- Case 1
- Msgbox "La cellule est egale à 1"
- case else 'les cas non detecté avant
- msgbox "La cellule contient autre chose"
- End Select
- Next y
- Next x
|
Quant a nos propos sur les algo, "l'ignorance" etc. c'est de la généralité, tu n'étais pas ciblé du tout Enfin, pour ma part...
Maintenant pour cela : Citation :
J'ai bien essayé de trouver des tutos sur le Net, mais en général c'est soit "Alors recopiez ce code et regardez ca marche" sans vraiment expliquer les tenants et aboutissants, soit un catalogue des fonctions/structures de base mais rien concernant la syntaxe, les déclarations par exemples. Je n'ai pas trouvé de vrai tuto bien clair qui explique le VB un peu à la manière du SdZ. Si vous en connaissez, faites-moi signe !
|
il n'y a rien de mieux que la touche F1 dans la suite Office, ou encore sous Excel l'enregistreur de Macro pour piger le fonctionnement. Message édité par SuppotDeSaTante le 04-08-2010 à 23:06:12 ---------------
Soyez malin, louez entre voisins !
|