Soucis de formule en VBA excel

Résolu/Fermé
2pax.cruz - 9 juil. 2010 à 09:03
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 9 juil. 2010 à 09:52
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
A voir également:

5 réponses

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
En fait non, ça n'ajoute pas la ligne. Bizarre.
0
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
C'est quoi formulaR1C1 ?

Merci.
0
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
9 juil. 2010 à 09:52
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