Fonction SI

Résolu
Ancestroplaced Messages postés 10 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 3 octobre 2013 - 2 oct. 2013 à 12:48
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 - 3 oct. 2013 à 23:07
Bonjour,

Je travaille sur un code qui me permet de sélectionner la dernière cellule non vide de la colonne A sur la feuille "BASE" et qui va coller en fonction de la valeur de cette cellule dans la feuille "YF" ou "BP".

Le collé se fait systématiquement dans la feuille "BP".

Je pense que j'ai mal écrit ma fonction SI.

Auriez-vous une idée?

Merci d'avance

----------------------------------------------------
Sub Bouton2_Clic()

Sheets("BASE").Select
Range("A65536").End(xlUp).Select
Selection.Copy

If Range("A65536").Value = YF Then

Sheets("YF").Select

End If

If Range("A65536").Value = BP Then

Sheets("BP").Select

End If

Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste

End Sub
--

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 oct. 2013 à 13:17
Bonjour,
Et-la question/réponse est ... où et comment as-tu déclaré et initialisé les deux variables BP et YF ????
Elémentaire, mon cher Watson ....
0
Ancestroplaced Messages postés 10 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 3 octobre 2013
2 oct. 2013 à 13:43
Effectivement, es ce que tu peux me dire comment je dois le faire?

Es ce que je mets juste Dim YF As String et Dim BP As String en dessous de Sub?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 oct. 2013 à 13:47
Hmmm...
Gné ?
Tes dim ne sont que des dséclarations et non des initialisations !
je te laisse là ...(car là, vraiment, ce sont les bases de la base de la base qui sont absentes !)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 oct. 2013 à 13:54
Enfin ... !
Réfléchis donc un peu ...
Si tu déclares par exemple que toto est une adresse (exemple) :
que vaut donc toto ? c'est une adresse, pour sûr ! Mais laquelle ? "Abracadabra" ou "on s'en fout", ou rien du tout, donc "" ????)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 oct. 2013 à 15:08
Une chose est certaine, dans mon exemple ci-dessus) : toto n'est pas "toto" (en espérant que cela te "parle" un peu) sauf si tu as initialisé la variable toto en lui attribuant la valeur "toto", hein ...*
Dur dur ?
0
Ancestroplaced Messages postés 10 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 3 octobre 2013
2 oct. 2013 à 18:33
Effectivement je suis débutant, si çà t'ennuie autant d'aider les novices tu à le droit de passer ton chemin, sinon en effet je suis perdu. Je ne sais pas comment déclarer mes variables.

Cordialement
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 2/10/2013 à 19:21
Bien.
Bonne chance, donc, Ancestroplaced, dans ton apprentissage (ce sera sans moi et je passerai mon chemin, pour répondre à ton voeu, lorsque tu ouvriras tes discussions ).
0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 344
Modifié par jordane45 le 3/10/2013 à 02:16
Bonsoir,
je suis perdu. Je ne sais pas comment déclarer mes variables.
Comme le dit Ucfoutu (que je salue au passage), il faut comprendre ce que signifie "déclarer" une variable et "Initialiser" une variable.

'je déclare ma variable
Dim Mavariable as string
'pour l'instant elle ne contient rien !

Mavariable = "du zoli texte.."
'cette fois je lui ai assigné une valeur.


Je vous invite à mettre au début de votre code avant le premier SUB :
Option Explicit On

sub maMacro()
'...
End sub



Pour en revenir à votre souci de départ ...
Dans les lignes de code :
If Range("A65536").Value = YF Then 
If Range("A65536").Value = BP Then 

que valent YF et BP ?

Il semble que ces variables soient vides (voir explication d'avant).

et puis au lieu de passer par des successions de IF... essayez le SELECT CASE

Dim YF as string
Dim BP as string
Dim valAtester as string
YF = "Texte 1"
BP = "Texte 2"
valAtester = Range("A65536").Value 

Select Case valAtester 
  Case YF
   Sheets("YF").Select 
  Case BP
    Sheets("BP").Select 
End Select







NB : lors de tes prochains messages, merci d'utiliser la coloration syntaxique pour poster du code
(première icone en haut à droite lorsque tu écris).
'Ceci est du code !



Cordialement,
Jordane
0
Ancestroplaced Messages postés 10 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 3 octobre 2013
3 oct. 2013 à 22:40
Merci pour les petites astuces, un collègue m'a dépanné en dérivant un peu de la fonction SI:

Sub Bouton1_Clic()

Sheets("BASE").Select
Range("A65536").End(xlUp).Select
Selection.Copy

Select Case Selection.Value
Case "YF"
Sheets("YF").Select
Case "BP"
Sheets("BP").Select
Case Else
End Select

Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste

End Sub

--
0
Ancestroplaced Messages postés 10 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 3 octobre 2013
3 oct. 2013 à 22:41
Les YF et BP sont des feuilles Excel

--
0
jordane45 Messages postés 38173 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 10 mai 2024 344
3 oct. 2013 à 23:07
Si ton souci est résolu merci de clôturer le sujet.
0
Rejoignez-nous