Conditions : Si la cellule B2 contient le texte "XX" [Résolu]

Julia_74 20 Messages postés mardi 30 septembre 2014Date d'inscription 5 mars 2015 Dernière intervention - 30 sept. 2014 à 14:56 - Dernière réponse : Julia_74 20 Messages postés mardi 30 septembre 2014Date d'inscription 5 mars 2015 Dernière intervention
- 19 nov. 2014 à 11:45
Bonjour à tous,

Biologiste de formation, je débute totalement dans le milieu. Je dois créer un fichier assez complexe sur Excel, et je coince sur une étape.

J'ai une feuille A pour le projet A et une feuille B pour le projet B, avec un nombre de données conséquent.

La feuille C me sert à regrouper les données soit du projet A, soit du projet B (mêmes tableaux, mêmes graphiques, seules les données chiffrées changent). Je parviens à créer un bouton de commande qui me transferre les données de la feuille A sur la feuille C, idem pour la feuille B.

Ce que je voudrais, c'est que sur la feuille C, j'ai en position B2 une liste déroulante (projetA ou projetB) et que selon le contenu de cette case B2, les données transférées à ma feuille C soient celles correspondantes.

J'ai donc besoin d'une condition "Si B2 contient projetA on me copie les données de la feuille A, si B2 contient projetB on me copie les données de la feuille B" mais je ne parvient pas à placer la condition correctement, ma liste déroulante est pourtant bien créée.

J'espère que mes explications ne sont pas trop brouillons.

Merci d'avance,

Amicalement

Julia
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 30/09/2014 à 15:05
1
Merci
Bonjour,
1) je déplace ta discussion vers VBA
2) on voudrait bien voir le code que tu as tenté, s'il te plait (c'est une règle, ici)
3) à tout hasard (puisque l'on ne sait pas ce que tu as tenté) : la fonction Instr (ton aide VBA à ouvrir sur ce mot) te permet aisément de vérifier si une chaîne de caractères contient ou non une sous-chaîne spécifiée.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend

Merci ucfoutu 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
jordane45 22884 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 30 sept. 2014 à 15:06
1
Merci
Bonjour,

Excel.. utilises le VBA ( j'ai déplacé ta discussion dans la bonne section du forum).

Pour ce qui est de :
J'ai donc besoin d'une condition "Si B2 contient projetA on me copie les données de la feuille A, si B2 contient projetB on me copie les données de la feuille B" mais je ne parvient pas à placer la condition correctement, ma liste déroulante est pourtant bien créée.
Sans nous montrer ton code.. il nous sera difficile de te répondre et de te dire ce qui ne va pas dans ton code....


Au mieux.. je peux te dire que ton code pourrait ressembler à ça:
Sub test()

Dim desti As String
Dim feuilSource As Worksheet
Dim feuilCible As Worksheet
Set feuilCible = Sheets(3)

'--------------------------------------------
' On regarde ce que vaut B2:
'--------------------------------------------
desti = Sheets(3).Range("B2").Value
Select Case desti
    Case "projetA"
        Set feuilSource = Sheets(1)
    Case "projetB"
        Set feuilSource = Sheets(2)
    Case Else
       'ca vaut autre chose...
        Exit Sub
End Select

'--------------------------------------------
' ICI le code pour récuperer les valeurs..
'--------------------------------------------


End Sub




Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de jordane45
Julia_74 20 Messages postés mardi 30 septembre 2014Date d'inscription 5 mars 2015 Dernière intervention - Modifié par jordane45 le 30/09/2014 à 16:01
0
Merci
Bonjour, toutes mes excuses pour l'erreur de localisation de mon post...

Voici mon code actuel :
Sub copier()
'sélection des conditions
Sheets("3").Activate
If Range("B2").Value Like "*PROJETA*" Then
'Activation de la feuille A
Sheets("A").Activate
'Copie
Sheets("A").Select
Range("BilanFA").Select
selection.Copy
Sheets("3").Select
Range("Destination").Select
ActiveSheet.Paste
selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False

Either If Range("B2").Value Like "*PROJETB*" Then ....

End If
End Sub



Comme je l'ai dit je débute (hier matin) donc pas de moqueries :).

Je suis impréssionée par la rapidité de vos réponses en tout cas et vous en remercie

Julia

EDIT : Ajout des balises de code:
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Commenter la réponse de Julia_74
Julia_74 20 Messages postés mardi 30 septembre 2014Date d'inscription 5 mars 2015 Dernière intervention - 30 sept. 2014 à 15:56
0
Merci
Jordane, merci pour l'exemple de code, j'éssaie en adaptant le mien
jordane45 22884 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 30 sept. 2014 à 16:13
Ce qui ne va pas dans ton code précédent... c'est le EITHER...; ça n'existe pas en VBA.
Il faut utiliser ELSE

Par contre, (c'est une question d'habitude que tu vas vite apprendre ^^ ) essayes de découper ton programme en FONCTIONS et à ne pas dupliquer les mêmes lignes de code inutilement... surtout si ce n'est que pour y changer deux ou trois variables...

Ton code.. légèrement revu pourrait donner quelque chose du genre :


Sub copier()
'sélection des conditions
Dim Fsource As Worksheet
Dim Fdesti As Worksheet
Dim rngDesti As Range
Dim rngToCop As Range

      Set Fdesti = Sheets(3)
    Set rngDesti = Range("Destination")
    
    'On défini les Variables en fonction de B2
    If Fdesti.Range("B2").Value Like "*PROJETA*" Then
        Set Fsource = Sheets("A")
        Set rngToCop = Range("BilanFA")
    ElseIf Range("B2").Value Like "*PROJETB*" Then
        Set Fsource = Sheets("B")
        Set rngToCop = Range("BilanFB")
    End If
    
    'Lancement de la copie
    Copi = CopieFromSheet(Fsource, Fdesti, rngToCop, rngDesti)

End Sub

Function CopieFromSheet(ShSource As Worksheet, ShDesi As Worksheet, rngTocopy As Range, rngDesi As Range)
    'Activation de la feuille
    ShDesi.Activate
    'Copie
    ShDesi.Select
    rngTocopy.Select
    Selection.Copy
    ShSource.Select
    rngDesi.Select
    ActiveSheet.Paste
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
End Function



Bien sûr.. à corriger/modifier selon tes besoins.... là.. je l'ai écris de tête sans le tester.


PS: pour poster du code.. utilises la coloration syntaxique STP.
Explications disponibles ici :
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.
Commenter la réponse de Julia_74
Julia_74 20 Messages postés mardi 30 septembre 2014Date d'inscription 5 mars 2015 Dernière intervention - Modifié par Julia_74 le 30/09/2014 à 16:21
0
Merci
Jordane,

Merci pour ton temps (et pour l'aide)
Je retravailles le code pour l'adapter à mes données, et je reviens vers ce post si j'ai d'autres questions ou simplement pour signaler que ça fonctionne ou non (au passage, j'aurai lu les explications pour la coloration syntaxique c'est promis)

Merci encore,

Julia
Commenter la réponse de Julia_74
Julia_74 20 Messages postés mardi 30 septembre 2014Date d'inscription 5 mars 2015 Dernière intervention - Modifié par Julia_74 le 1/10/2014 à 09:25
0
Merci
Bonjour, après écriture et modification , j'obtiens le message "la méthode sélect de la classe range a échoué et malgré mes recherches je ne vois pas d'où le problème vient...

(J'ai cliqué sur l'icône code comme expliqué dans le document pour la colo syntaxique, alors j'espère que ça a bien fonctionné)

Merci encore à tous

Sub action()
'conditions
Dim Fsource As Worksheet
Dim Fdesti As Worksheet
Dim rngDesti As Range
Dim rngToCopy As Range

Set Fdesti = Sheets("Synthese")
Set rngDesti = Range("Destination")

'b2
If Fdesti.Range("B2").Value Like "*FA*" Then
Set Fsource = Sheets("FA")
Set rngToCopy = Range("BilanFA")
ElseIf Range("B2").Value Like "*EFA*" Then
Set Fsource = Sheets("EFA")
Set rngToCopy = Range("BilanEFA")
End If

'copie
Copi = CopieFromSheet(Fsource, Fdesti, rngToCopy, rngDesti)

End Sub

Function CopieFromSheet(ShSource As Worksheet, ShDesi As Worksheet, rngToCopy As Range, rngDesti As Range)
'Activation de la feuille
ShDesi.Activate
'Copie
ShDesi.Select
rngToCopy.Select
Selection.Copy
ShSource.Select
rngDesti.Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Function
jordane45 22884 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 1 oct. 2014 à 09:22
j'obtiens le message "la méthode sélect de la classe range a échoué
Sur quelle ligne de code te mets il cette erreur ?
Julia_74 20 Messages postés mardi 30 septembre 2014Date d'inscription 5 mars 2015 Dernière intervention - 1 oct. 2014 à 09:26
J'ai souligné la ligne de code ci_dessus :)
jordane45 22884 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 1 oct. 2014 à 09:37
... tu sais que :
If Fdesti.Range("B2").Value Like "*FA*" Then


Sera vrai... que ton texte soit : aaFAaa ... ou aaEFAaa .... et donc que tu n'iras jamais dans le ELSIF ....
.. DOnc.. il se peut que ton code... ne se trouve pas dans la Feuille qu'il devrait ....
et forcéement;.. la plage ("BilanEFA") à Selectionner... n'existe pas ...dans la feuille : "FA"
Commenter la réponse de Julia_74
Julia_74 20 Messages postés mardi 30 septembre 2014Date d'inscription 5 mars 2015 Dernière intervention - 19 nov. 2014 à 11:45
0
Merci
oublié : RÉPONSE CORRECTE , merci :)
Commenter la réponse de Julia_74

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.