Soucis de formule en VBA excel

Résolu
2pax.cruz -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,



Je vous explique ce que je veux faire.
En fait, j'ai un grand tableau excel et je tente de faire, sur une feuille à part, un formulaire où les utilisateurs pourront sélectionner les colonnes du tableau qu'ils veulent voir.
J'ai déjà fait le formulaire, je sais retoruvé la colonne correspondante mais je n'arrive pas à affecter à ma nouvelle feuille, un lien vers les cellules de départ.
Je sais pas si je suis clair... Mais j'aimerais, en fait, donner à une cellule, une formule du style = Tableau!A1
Mais en VBA, je n'y arrive pas. Je vous met mon code :

'Colonne A sur la vue
Colonne1 = ComboBox1.Value
For n = 1 To 25 'car 25 colonnes sur le tableau
If Sheets("tableau").Cells(21, n).Value Like Colonne1 Then
For i = 21 To 1500
Sheets(NomFeuilleDepart).Cells(i, 1).Formula = "=tableau!" & Cells(i, n)
Next i
Exit For
End If
Next n

5 réponses

2pax.cruz
 
Je viens de trouver. Je ne connaissais pas l'utilisation de Cells().Adress


Cependant, cela marche très bien mais lorsqu'on insère une ligne dans le tableau, ça en insère une aussi dans la deuxième mais sa valeur est alors #Ref!


Comment faire?


Merci.
0
2pax.cruz
 
En fait non, ça n'ajoute pas la ligne. Bizarre.
0
Bolino
 
Bonjour,

remplace la ligne :
Sheets(NomFeuilleDepart).Cells(i, 1).Formula = "=tableau!" & Cells(i, n)

par celle-ci :
Worksheets(NomFeuilleDepart).Cells(i, 1).FormulaR1C1 = "=tableau!R" & i & "C" & n

Bonne journée
0
2pax.cruz
 
C'est quoi formulaR1C1 ?

Merci.
0
Bolino
 
Cela permet de définir la référence d'une cellule par la notation LxCy ou x est le numero de la ligne et y est le numero de la colonne.
Donc avec formulaR1C1 tu peux définir une formule ou les index de colonne ET de ligne sont des entiers, contrairement à la notation A1
Donc en exemple la notation E2 et la notation L2C5 définisse la même cellule.
En VBA, anglais oblige, L2C5 devient dans ton code R2C5.
0

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

Posez votre question
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut,
Pour obtenir ton résultat, il faut :
Chercher dans les colonnes, à la ligne 21, la valeur contenue dans le combobox1 et en retourner le numéro de colonne correspondante :
Dim numcol As Integer
With Sheets("tableau").Range("A21:Y21")
numcol = .Cells.Find(Combobox1.Value).Column
End With

Ensuite, copier le contenu de cette colonne, de la ligne 21 à la dernière ligne complétée, vers la feuille NomFeuilleDepart à partir de A21 :
Dim derlig As Integer
With Sheets("tableau")
    derlig = .Cells(65536, numcol).End(xlUp).Row
    .Range(.Cells(21, numcol), .Cells(derlig, numcol).Copy Sheets(NomFeuilleDepart).Cells(1, 1)
End With


Code complet :
Dim numcol, derlig As Integer
With Sheets("tableau").Range("A21:Y21")
     numcol = .Cells.Find(Combobox1.Value).Column
End With
With Sheets("tableau")
     derlig = .Cells(65536, numcol).End(xlUp).Row
     .Range(.Cells(21, numcol), .Cells(derlig, numcol).Copy Sheets(NomFeuilleDepart).Cells(1, 1)
End With
Sheets(NomFeuilleDepart).Activate

0