condition en vba

br44

XLDnaute Impliqué
bonjour le forum

voilà je voudrais savoire comment écrire en vba :

si Range("G3")est ègal à "C01 ou C04 ou C03 ou C06 " alors copier vers "Récap2"

Mais

Si Range("G3")est ègal aux reste (de "C02 à C010") alors copier vers "Récap1"

sans doublons de copie dans la "Récap1"

En espèrant avoir ètè suffisament claire dans mes explications je vous dit à plus et merci par avence pour toutes les réponses avenir

A bientôt

br44
 

Luki

XLDnaute Accro
Re : condition en vba

Bonjour Br44,

En Pj, une solution avec " Select case"

J'ai considéré que récap 1 et 2 sont des onglets dans le même classeur.

Vois si c'est ce que tu veux.

A+
 

Pièces jointes

  • br44.xls
    26.5 KB · Affichages: 56

br44

XLDnaute Impliqué
Re : condition en vba

re: Bonjour le forum,Bonjour Luki

Tout d'abors merci pour avoir répondu à mon message . je viens de regarder le fichier que tu ma joint et en regardant le code je me suis apperçu que j'ai du mal expliquer se que je voulais .

Tu as raisons en se qui conserne les "Récap1" et "Récap2" il sagit bien d'onglets situés dans le même classeur ,mais la où il y a une petite erreure c'est que les Références allant de "C01 à C010" ne sont pas des addresses de cellules mais des codes clients provenants d'une liste de choix du fichiers "Clients" qui appraissent dans la cellule "G3" de ma feuille1 de mon classeur "Facture" .

En rèsumè je voudrais savoir commant separer certain clients par leur code pour cause d'adresse de facturation commune par raport à l'ensembles des clients . J'ai la procèdure pour "Si" mais pas pour le reste se qui provoque une copie dans chaqu'une des "Récap" au lieu d'une copie par "Récap"

Exemple :

If Range("G3").Values="01"Then
Sheets ("feuil1").Range("A1:G29").Copy Destination:= Sheets ("RéCap2").Range("a65536").End(XlUp)
Else
Sheets("Feuil2").Range("1:50") .Copy Destination := Sheets ("RéCap2").Range("a65536").End(XlUp).Offset(1,0)
End If

If Range("G3").Values="02"Then
Sheets ("feuil1").Range("A1:G29").Copy Destination:= Sheets ("RéCap1").Range("a65536").End(XlUp)
Else
Sheets("Feuil2").Range("1:50") .Copy Destination := Sheets ("RéCap1").Range("a65536").End(XlUp).Offset(1,0)
End If

Voilà en espèrants avoire ètè plus claire cette fois si .Je te dis merci encore et à bientôt sur se fil
br44
 

Luki

XLDnaute Accro
Re : condition en vba

Re Br44,

Regarde le code que j'ai envoyé et fais les remplacements qui vont bien, ça devrait marcher.

Il te restera à faire les adaptations.

Le select case est plus facile à manier que le If lorsqu'il faut comparer une valeur à beaucoup d'autres.

Code:
 Sub Recap1_ou_Recap2()
Dim Rgdest As Range
Dim Rgtest As Range
Dim Reponse As Variant

    Select Case Range("G3")
[COLOR=Red]         Case Is = Range("C1"), Is = Range("C4"), Is = Range("C3"), Is = Range("C6")[/COLOR] 
'[B][COLOR=Black]à remplacer par :[/COLOR][/B] [B][COLOR=Blue]Case Is "CO1","CO3","CO4","CO6"[/COLOR][/B]
            Set Rgdest = Worksheets("Récap2").Range("A65536").End(xlUp)
            Set Rgtest = Worksheets("Récap2").Range("A1", Rgdest)
            On Error Resume Next
            Reponse = Application.WorksheetFunction.Match(Range("G3").Value, Rgtest, 0)
            If Err.Number <> 0 Then Range("G3").Copy Rgdest.Offset(1, 0)
            On Error GoTo 0
        Case Else
            Set Rgdest = Worksheets("Récap1").Range("A65536").End(xlUp)
            Set Rgtest = Worksheets("Récap1").Range("A1", Rgdest)
            On Error Resume Next
            Reponse = Application.WorksheetFunction.Match(Range("G3").Value, Rgtest, 0)
            If Err.Number <> 0 Then Range("G3").Copy Rgdest.Offset(1, 0)
            On Error GoTo 0
           
    End Select

End Sub
A + et à suivre
 

br44

XLDnaute Impliqué
Re : condition en vba

re: Salut à tous et toutes ,Luki

Bon je viens de testet t'as procèdure et le résultat est : une copie de de la valeure Range("G3") Dans l'une où l'autres des "Récap" .

Se que je desire est la copie entière de ma "feuil1" soit Range("A1:G29") ,soit trier en deux groupe en fonction de la valeure de Range("G3").

Exmple :

Si Range("g3") affiche "C01" alors Range("A1:G29") vas en "récap2"
Si " " affiche "C02" " " vas en "Récap1"
Si " " " " "C03" " " " " "Récap2"

Ect .......

Merci encore pour le temps que tu m'accorde .je te dis a plus sur ce fil

Ps: j'ai oublier de te dire que j'ai placé t'as procédure sur un boutton de mon UserFrom cela à peut-être de l'insidence sur le résultat ,si oui dit le moi ?

à bientôt Br44
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 823
dernier inscrit
ben talha redouane