>Antoine, le mardi 24 juillet 2007 à 16:36:11
>(...)
>En gros je ne veux pas devoir utiliser la recopie incrémentée.
Pile poil ma problématique. Même après autant de temps.
>Alain42, le mardi 24 juillet 2007 à 17:47:18
>et la tu peux utiliser ensuite la copie incrémentée.
Pile poil la manipulation à éviter... C'est super lourd et complètement bancal à la moindre modification, surtout reliée à un SGBD. De plus, l'énoncé était précis (rare sur les forums pour que je le souligne avec un grand remerciement).
>Vaucluse, le mercredi 25 juillet 2007 à 20:20:14
>A tout hasard, pour éviter la copie sur toutes les lignes
Ah, une piste intéressante ?
>Taper la formule correspondant à la premiere ligne
>Fermer avec ctrl+ entrée
Muais... Encore un truc à tapoter à la main...
J'écris de manière générale : j'espère que les commentaires proviennent d'une vision de secrétaire. Non, aucun aspect négatif à entrevoir dans la phrase précédente : je ne parle que de ce que l'on m'a enseigné, c'est-à-dire que de manière caricaturale, un secrétaire (voire greffier ou gratte-papier) se contente schématiquement de tapoter et copier/coller. C'est un long travail fastidieux.
Mais sous une vision d'informaticien (donc réfléchie), la problématique est tout de suite plus facile (sous réserve d'agir de manière ordonnée). Sans être expert (voire même néophyte en la matière), j'ai pu trouver la réponse, que j'inscris ici pour tous ceux qui en auraient besoin (y compris pour ma part si j'oublie entre-temps).
Je suis néanmoins parti de la piste donnée en filigrane par Vaucluse. Mais en y ajoutant un peu de mon grain de sel : les macros. On crée une nouvelle macro (vive les tutos "internetiens") en exécutant les instructions. Une fois Ctrl+Entrée effectué, on finit l'enregistrement. Et on regarde la macro puis on l'analyse.
L'ajout qui a été apporté, c'est de pouvoir exécuter la macro en revenant à la cellule qui était pointée par le curseur. Sur ce qui suit, le cas est de pouvoir copier les données de la colonne A en colonne B : aucune utilité en soi, je vous l'accorde mais le but ici doit être avant tout instructif.
Et l'on obtient ceci :
Sub MacroFormuleColonneB()
Call MacroFormuleColonne("B", "=RC[-1]")
End Sub
Sub MacroFormuleColonne(LettreColonne As String, Formule As String)
'Déclarations
Dim CelluleSave
Dim ConvertCountColumn As Integer
Dim ConvertCountRow As Integer
Dim ConvertCountCell As String
Dim ConvertCountCharA As Integer
'Initialisations
CelluleSave = ActiveCell.Address
ConvertCountColumn = ActiveCell.Column
ConvertCountRow = ActiveCell.Row
ConvertCountCharA = Asc("A")
ConvertCountCell = Chr$(ConvertCountCharA + (ConvertCountColumn - 1)) & ConvertCountRow
'Traitement
Columns(LettreColonne & ":" & LettreColonne).Select
Selection.FormulaR1C1 = Formule
Range(ConvertCountCell).Select
End Sub
Suivant la problématique de tout un chacun, ce sera facile de l'adapter.
De plus, cette solution permet, au chargement de la feuille Excel, d'appeler automatiquement notre macro de colonne. Sous le VB lié à Excel, on inscrit au bon endroit* (c'est-à-dire le VB des feuilles et non celui des macros et modules VB) :
Private Sub Worksheet_Activate()
Call MacroFormuleColonneB
End Sub
* Il y a un explorateur de projet VB une fois que celui-ci est en fenêtre active.
Ainsi, j'espère que ce grand paragraphe vous démontrera qu'il est possible de faire simple et efficace. Les puristes diront que cela nécessite l'utilisation de macros à devoir activer, qu'il y a des risques, etc. Pour les risques, non, il n'y en a aucun si ce n'est que des macros dont on crée soi-même ou qu'on en comprend le fonctionnement. Chaque situation est unique mais ceci répondra à la majorité des cas. Bonne journée à tous.
P.S. Certes, cette solution est limitative : elle n'agit que sur les 26 premières colonnes. Une fois de plus, si votre cas ne correspond pas, il faut adapter. Comme toujours, c'est possible de le faire.