Merci touhami pour la solution. L'opération de chemin `egde` (comme l'opération `node`) est traitée après à la fin du chemin principal (post process comme on dit). Cette opération `edge` crée un nouveau chemin, chemin et c'est donc le ce chemin créé par edge qu'il faut nommer pour l'intersection. `edge[name path=droite]` et non le chemin principal.
\documentclass[]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\draw[help lines] (-3,-3) grid (3,3); % grille me path=droite
\draw[] (-3,-3) edge[name path= droite]+ (6,4);
\draw[name path=rectangle] (-2,-2) rectangle (2,2) ;
\fill [name intersections={of=droite and rectangle, name=i, total=\t}]
[red, opacity=0.5, every node/.style={above left, black, opacity=1}]
\foreach \s in {1,...,\t}{(i-\s) circle (2pt) node {\footnotesize\s}};
\end{tikzpicture}
\end{document}
![alt text][1]
[1]: https://texnique.fr/osqa/upfiles/test_intersection_3_edge_solution_1.png