OVH Cloud OVH Cloud

Copie conditionnelle dans une cellule

5 réponses
Avatar
olivier.boesch
Bonjour =E0 tous,

Je recherche une fa=E7on (je pense que ce sera avec un macro, mais bon)
pour copier la valeur saisie d'une cellule vers la premi=E8re cellule
vide d'une colonne d'une autre feuille.

J'explique :

1. Je saisis une valeur dans la case Feuille1!A1.
2. Dans la cellule Feuille1!A2 il y a une fonction qui
d=E9termine si la valeur est correcte suivant certaines conditions. Si
c'est bon, on doit l'enregistrer.
3. La valeur de Feuille1!A1 est copi=E9 dans la cellule
Feuille2!A33 (par exemple) qui est la premi=E8re cellule vide de cette
colonne.
4. La valeur Feuille1!C3 qui doit =EAtre associ=E9 =E0 Feuille1!A1
dans le tableau est copi=E9 dans la cellule Feuille2!B33

Comment faire ?
Merci d'avance.

5 réponses

Avatar
RGI
Bonjour

dans ce genre ?

'copier ce code dans la feuille 1
'si la valeur de a1 de la feuille 1 est supérieure à 456 ou inférieure à 567
'cette valeur va s'inscrire en colonne A de la feuille2
'est-ce cela que tu recherches ?

Private Sub Worksheet_Change(ByVal Target As Range)
der = Sheets(2).Range("A30000").End(xlUp).Row + 1
If Sheets(1).Range("a1") > "456" Or Sheets(1).Range("a1") < "567" Then
Sheets(2).Cells(der, 1) = Sheets(1).Range("a1").Value
Else
Sheets(2).Cells(der, 1) = ""
End If
End Sub

salutations

RGI


a écrit dans le message de news:

Bonjour à tous,

Je recherche une façon (je pense que ce sera avec un macro, mais bon)
pour copier la valeur saisie d'une cellule vers la première cellule
vide d'une colonne d'une autre feuille.

J'explique :

1. Je saisis une valeur dans la case Feuille1!A1.
2. Dans la cellule Feuille1!A2 il y a une fonction qui
détermine si la valeur est correcte suivant certaines conditions. Si
c'est bon, on doit l'enregistrer.
3. La valeur de Feuille1!A1 est copié dans la cellule
Feuille2!A33 (par exemple) qui est la première cellule vide de cette
colonne.
4. La valeur Feuille1!C3 qui doit être associé à Feuille1!A1
dans le tableau est copié dans la cellule Feuille2!B33

Comment faire ?
Merci d'avance.
Avatar
olivier.boesch
En fait, le conditionnement est déjà fait. La manip qui reste à
faire est de copier la cellule A1 de la Feuille 1 vers la première
cellule vide de la colonne A de la Feuille 2...
Avatar
RGI
ceci doit faire

der = Sheets(2).Range("A30000").End(xlUp).Row + 1

der t'indique la première ligne vide de la colonne A de la feuil2

salutations

RGI

a écrit dans le message de news:

En fait, le conditionnement est déjà fait. La manip qui reste à
faire est de copier la cellule A1 de la Feuille 1 vers la première
cellule vide de la colonne A de la Feuille 2...
Avatar
olivier.boesch
J'ai écrit cette fonction :

Function CodePostal()
der = Sheets(8).Range("B50000").End(xlUp).Row + 1
Sheets(8).Cells(der, 1) = Sheets(1).Range("h9").Text
Sheets(8).Cells(der, 2) = Sheets(1).Range("ac11").Text
MsgBox "Ville Rajoutée !"
End Function

Lorsque dans Visual Basic je lance la macro ça fait ce qu'il faut,
mais par contre dans mon fichier, ça ne le fait pas... Pourquoi ?
Avatar
Ange Ounis
Lorsque dans Visual Basic je lance la macro ça fait ce qu'il faut,
mais par contre dans mon fichier, ça ne le fait pas... Pourquoi ?


Une fonction perso appelée dans une cellule ne peut pas faire autre chose que de
renvoyer son résultat (à l'exception de l'envoi d'un MsgBox, mais c'est
anecdotique).
Ta fonction est plutôt une procédure (d'ailleurs tu ne lui affectes aucun
résultat) et une procédure ne peut se lancer à partir d'une cellule (sauf macro
Excel 4 je crois, il faudrait vérifier) qu'en utilisant une procédure
événementielle (Worksheet_Change par exemple pour ce que tu veux faire).

----------
Ange Ounis
----------

J'ai écrit cette fonction :

Function CodePostal()
der = Sheets(8).Range("B50000").End(xlUp).Row + 1
Sheets(8).Cells(der, 1) = Sheets(1).Range("h9").Text
Sheets(8).Cells(der, 2) = Sheets(1).Range("ac11").Text
MsgBox "Ville Rajoutée !"
End Function

Lorsque dans Visual Basic je lance la macro ça fait ce qu'il faut,
mais par contre dans mon fichier, ça ne le fait pas... Pourquoi ?