Fonction SI

[Résolu]
Signaler
Messages postés
10
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
3 octobre 2013
-
Messages postés
33763
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2021
-
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

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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 ....
Messages postés
10
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
3 octobre 2013

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?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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 !)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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 "" ????)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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 ?
Messages postés
10
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
3 octobre 2013

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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 ).
Messages postés
33763
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2021
353
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
Messages postés
10
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
3 octobre 2013

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

--
Messages postés
10
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
3 octobre 2013

Les YF et BP sont des feuilles Excel

--
Messages postés
33763
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 octobre 2021
353
Si ton souci est résolu merci de clôturer le sujet.