OVH Cloud OVH Cloud

Comment copier avec liaisons cellules Feuil1 sur premier emplacement vide Feuille2 ?

8 réponses
Avatar
GA
Bonjour à tous,

Tout nouveau sur ce super forum, je viens demander votre aide pour
mettre au point un classeur d'audits de visites.

Sur un tableau Excel de 10 onglets, j'ai un onglet de Synthese qui
reprend sur la colonne B (range (B7:B82),les totaux par thème des
cellules saisies sur les autres onglets.

Il faudrait qu'à chaque nouvelle saisie sur ces onglets, les résultats
se positionnent sur la première vide colonne à droite soit la colonne C
et ainsi de suite.
Ceci afin de conserver l'historique de chaque saisie.

Je ne trouve pas la formule pour réaliser cela.
J'ai les formules de copy (que j'ai trouvées ici), mais chaque nouvelle
saisie vient écraser l'ancienne. J'ai essayé avec "Offset" mais sans
résultat.
Les colonnes et les lignes ont toutes un titre. Les cellules sont vides
mais le tableau est pré-formaté avec une mise en forme conditionnelle.

Merci de me renseigner, ce serait super,

Cordialement.

8 réponses

Avatar
Philippe.R
Bonjour Gérard,

Voici un petite procédure VBA qui entre une valeur dans la première cellule libre de la ligne 3

Sub plusadroite()
'MPFE le 23/01/2005
Dim coLibrI As Integer
coLibrI = Range("IV3").End(xlToLeft).Column + 1
Cells(3, coLibrI).Value = coLibrI * 2
End Sub

--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"GA" a écrit dans le message de news:
O%
Bonjour à tous,

Tout nouveau sur ce super forum, je viens demander votre aide pour mettre au point un classeur
d'audits de visites.

Sur un tableau Excel de 10 onglets, j'ai un onglet de Synthese qui reprend sur la colonne B (range
(B7:B82),les totaux par thème des cellules saisies sur les autres onglets.

Il faudrait qu'à chaque nouvelle saisie sur ces onglets, les résultats se positionnent sur la première
vide colonne à droite soit la colonne C et ainsi de suite.
Ceci afin de conserver l'historique de chaque saisie.

Je ne trouve pas la formule pour réaliser cela.
J'ai les formules de copy (que j'ai trouvées ici), mais chaque nouvelle saisie vient écraser
l'ancienne. J'ai essayé avec "Offset" mais sans résultat.
Les colonnes et les lignes ont toutes un titre. Les cellules sont vides mais le tableau est
pré-formaté avec une mise en forme conditionnelle.

Merci de me renseigner, ce serait super,

Cordialement.



Avatar
GA
Bonjour Gérard,

Voici un petite procédure VBA qui entre une valeur dans la première
cellule libre de la ligne 3

Sub plusadroite()
'MPFE le 23/01/2005
Dim coLibrI As Integer
coLibrI = Range("IV3").End(xlToLeft).Column + 1
Cells(3, coLibrI).Value = coLibrI * 2
End Sub



MERCI beaucoup pour cette réponse rapide et efficace...

Cà déplace à chaque fois d'une colonne. Extra.

Mais, sans abuser, comment insérer ma formule de copie dans cette macro:

Une partie de ma formule est:

Range("H10,H16,H28,H41,H49,H62,H65,H67,H69").Select
Range("H69").Activate
Selection.Copy
Sheets("SYNTHESE AGENCE").Select
Range("B7").Select
'choix de B7 pour la premiere copie
ActiveSheet.Paste Link:=True

Je voudrais en plus y insérer la fonction ESTERREUR pour ne pas afficher
les #REF! et les #DIV/0! etc....


Merci encore de la réponse.

Cordialement.

Avatar
Philippe.R
Re,
Pour répondre à la 1ère question :
En déclarant préalablement la variable, tu peux remplacer
Range("B7").Select
par
Cells(2, coLibrI).Select
Pour la seconde question, il est préférable de gérer l'erreur le plus en amont possible, lors du calcul
dans la feuille d'origine avec quelquechose du genre :
=si(esterr(ta formule);"";ta formule)
--
Amicales Salutations
XL 97 / 2000 / 2002
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"GA" a écrit dans le message de news:

Bonjour Gérard,

Voici un petite procédure VBA qui entre une valeur dans la première cellule libre de la ligne 3

Sub plusadroite()
'MPFE le 23/01/2005
Dim coLibrI As Integer
coLibrI = Range("IV3").End(xlToLeft).Column + 1
Cells(3, coLibrI).Value = coLibrI * 2
End Sub



MERCI beaucoup pour cette réponse rapide et efficace...

Cà déplace à chaque fois d'une colonne. Extra.

Mais, sans abuser, comment insérer ma formule de copie dans cette macro:

Une partie de ma formule est:

Range("H10,H16,H28,H41,H49,H62,H65,H67,H69").Select
Range("H69").Activate
Selection.Copy
Sheets("SYNTHESE AGENCE").Select
Range("B7").Select
'choix de B7 pour la premiere copie
ActiveSheet.Paste Link:=True

Je voudrais en plus y insérer la fonction ESTERREUR pour ne pas afficher les #REF! et les #DIV/0!
etc....


Merci encore de la réponse.

Cordialement.



Avatar
GA
Re,
Pour répondre à la 1ère question :
En déclarant préalablement la variable, tu peux remplacer
Range("B7").Select
par
Cells(2, coLibrI).Select
Pour la seconde question, il est préférable de gérer l'erreur le plus en
amont possible, lors du calcul dans la feuille d'origine avec
quelquechose du genre :
=si(esterr(ta formule);"";ta formule)


Philippe,

Merci beaucoup car je suis là dessus depuis des heures et je tournais en
rond !!

J'ai juste besoin d'un peu d'aide encore:

Ok je vais effectivement gérer les erreurs dans l'onglet de saisie,c'est
effectivement plus rationnel, mais je démare en VBA et je sèche sur la
déclaration de la variable.


Peux-tu m'expliquer aussi le "IV" de: Range("IV3")


Cordialement et merci encore.

Avatar
Philippe.R
Re,
Cette ligne :

Dim coLibrI As Integer

placée juste en dessous du nom de la sub, constitue la déclaration de la variable "coLibrI"

dans Range("IV3"), IV est le doux nom que Microsoft a donné à la dernière colonne d'Excel ; la recherche
de la première colonne libre sur la ligne 3 se fait de droite à gauche (xltoleft) et part donc de la
dernière.
--
Amicales Salutations
XL 97 / 2000 / 2002

"GA" a écrit dans le message de news:

Re,
Pour répondre à la 1ère question :
En déclarant préalablement la variable, tu peux remplacer
Range("B7").Select
par
Cells(2, coLibrI).Select
Pour la seconde question, il est préférable de gérer l'erreur le plus en amont possible, lors du
calcul dans la feuille d'origine avec quelquechose du genre :
=si(esterr(ta formule);"";ta formule)


Philippe,

Merci beaucoup car je suis là dessus depuis des heures et je tournais en rond !!

J'ai juste besoin d'un peu d'aide encore:

Ok je vais effectivement gérer les erreurs dans l'onglet de saisie,c'est effectivement plus rationnel,
mais je démare en VBA et je sèche sur la déclaration de la variable.


Peux-tu m'expliquer aussi le "IV" de: Range("IV3")


Cordialement et merci encore.



Avatar
GA
Re,
Cette ligne :

Dim coLibrI As Integer

placée juste en dessous du nom de la sub, constitue la déclaration de la
variable "coLibrI"

dans Range("IV3"), IV est le doux nom que Microsoft a donné à la
dernière colonne d'Excel ; la recherche de la première colonne libre sur
la ligne 3 se fait de droite à gauche (xltoleft) et part donc de la
dernière.



Merci beaucoup pour les explications.

En fait j'avais compris la "déclaration" de la variable.

C'est la valeur que je ne sais pas affecter:

Dans ta ligne: Cells(3, coLibrI).Value = coLibrI * 2. Je pense qu'il
faut que je remplace colibrI*2 par mes arguments. C'est là que je pêche !!!


Voudrais-tu m'aider encore un peu...


Merci d'avance


Cordialement.

Avatar
Philippe.R
Bonsoir,
Je veux bien aider encore, bien sur.
Encore faut il que mon neurone un peu fatigué saisisse assez précisément ton attente.
Peux tu réexpliquer assez lentement ce que tu souhaites faire ?
--
Amicales Salutations
XL 97 / 2000 / 2002

"GA" a écrit dans le message de news:
%23%
Re,
Cette ligne :

Dim coLibrI As Integer

placée juste en dessous du nom de la sub, constitue la déclaration de la variable "coLibrI"

dans Range("IV3"), IV est le doux nom que Microsoft a donné à la dernière colonne d'Excel ; la
recherche de la première colonne libre sur la ligne 3 se fait de droite à gauche (xltoleft) et part
donc de la dernière.



Merci beaucoup pour les explications.

En fait j'avais compris la "déclaration" de la variable.

C'est la valeur que je ne sais pas affecter:

Dans ta ligne: Cells(3, coLibrI).Value = coLibrI * 2. Je pense qu'il faut que je remplace colibrI*2
par mes arguments. C'est là que je pêche !!!


Voudrais-tu m'aider encore un peu...


Merci d'avance


Cordialement.






Avatar
GA
Bonsoir,
Je veux bien aider encore, bien sur.
Encore faut il que mon neurone un peu fatigué saisisse assez précisément
ton attente.
Peux tu réexpliquer assez lentement ce que tu souhaites faire ?



Bonsoir Philippe,

C'est très gentil à toi de me répondre.

En fait j'ai trouvé, et cela fonctionne à peu près comme je le souhaite.

(Tu avais donné une valeur à la variable que pour me montrer un exemple...)

Je n'est pas repris cette ligne dans ma macro et cela fonctionne...

Le sujet:
En fait j'ai dans un classeur, des onglets d'audits qui me servent à
répondre à des questions, classées par thèmes,par NS (non satisfaisant),
ou S (satisfaisant).
Je fais le calcul en fin de thème du nombre de S/NS pour me donner un
sous-total en pourcentage par thème et un Total en pourcentage par onglet.
(Formule: NB.SI(H50:H61;"s")/(NB.SI(H50:H61;"s")+NB.SI(H50:H61;"ns"))

J'ai 7 onglets de ce style.

Un onglet de Synthèse me reprend les sous-totaux par thème et le
total.Toujours en pourcentage.

A chaque visite, je saisit un onglet et je veux, enfin j'aimerais !!
que la synthèse montre l'historique, donc l'évolution.

Grâce à toi, j'y suis en parti arrivé puisque maintenant, une nouvelle
saisie sur un onglet ne remplace plus sur la feuille de synthèse le
report de l'ancienne saisie et se reporte bien sur la colonne vide à
droite.

Il me reste à gérer la recopie de chaque sous-total sur la synthèse.

J'arrive à copier les sous-totaux mais pas encore le Total de l'onglet.
Obliger de le faire en 2 fois....(sur la synthese, le total est en haut,
et sur l'onglet, en bas).
Je peux néanmoins le recalculer à nouveau sur la feuille de synthèse..
Pas très académique mais bon .....

Il me reste par contre à saisir du texte dans un TextBox pour faire des
commentaires affectés à la cellule de sous-total de la feuille de
synthèse. J'ai fait un UseForm appelé par un bouton. C'est Ok sauf que
je ne sais pas sauvegarder le texte saisi dedans pour qu'il s'affiche si
on appuie sur le même bouton. Je veux aussi que ce bouton change de
couleur pour signaler la présence de texte.

Voilà, je t'ai résumé tant bien que mal, et j'espère que tu me comprendras.

Je te remercie encore pour ton aide précieuse.

Bien amicalement,