Selection de plage et ppté Range

Résolu
Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -  
Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un petit soucis avec la proprité du range. Je défini une plage de cellule via leur adresse et je voudrais copier ces cellules qui sont dans la feuille nommée 3 - Data 2 dans la feuille dans laquelle je travaille . J'ai écris le code suivant :
Dim Maplage As Range

nomCherche1 = ActiveSheet.Cells(4, 1).Value
nomCherche2 = ActiveSheet.Cells(5, 1).Value
Set result1 = Sheets("3 - Data 2").Range("C10:C100").Find(What:=nomCherche1)
Set result2 = Sheets("3 - Data 2").Range("C10:C100").Find(What:=nomCherche2)


debutPlage = result1.Address
FinPlage = result2.Offset(0, 1).Address

Sheets("3 - Data 2").Select
Set Maplage = Range(debutPlage & " : " & FinPlage)
'MsgBox "Plage de " & plage.Address
Maplage.Select
Selection.Copy
Sheets("10 - Zoom station").Select
Range("A23").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A23").Select


Sauf qu'au moment de faire
Maplage.Select
cela me met une erreur
J'ai essayé de définir ma plage autrement mais rien n'y fait toujours l'erreur qui apparaît ...

Je ne sais pas si cela vient de ma synthèse ou d'une partie que j'aurai oublier mais je ne vois vraiment pas ...

Merci beaucoup d'avance

4 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

    Essaies :
    Option Explicit
    Sub xxx()
    Dim result1 As Range
    Dim result2 As Range
    Dim maplage As Range
    Dim nomCherche1 As Variant
    Dim nomCherche2 As Variant
      nomCherche1 = ActiveSheet.Cells(4, 1).Value
      nomCherche2 = ActiveSheet.Cells(5, 1).Value
      Set result1 = Sheets("3 - Data 2").Range("C10:C100").Find(What:=nomCherche1)
      Set result2 = Sheets("3 - Data 2").Range("C10:C100").Find(What:=nomCherche2)
      If result1 Is Nothing Or result2 Is Nothing Then
        MsgBox "Nom non trouvé"
      Else
        Set maplage = Sheets("3 - Data 2").Range(result1, result2.Offset(0, 1))
        maplage.Copy Sheets("10 - Zoom station").Range("A23")
        Sheets("10 - Zoom station").Activate
        Sheets("10 - Zoom station").Range("A23").Select
      End If
    End Sub

    Cordialement
    Patrice
    1
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      ou plutôt :
      Option Explicit
      Sub xxx()
      Dim result1 As Range
      Dim result2 As Range
      Dim maplage As Range
      Dim nomCherche1 As Variant
      Dim nomCherche2 As Variant
        nomCherche1 = ActiveSheet.Cells(4, 1).Value
        nomCherche2 = ActiveSheet.Cells(5, 1).Value
        With Sheets("3 - Data 2")
          Set result1 = .Range("C10:C100").Find(What:=nomCherche1)
          Set result2 = .Range("C10:C100").Find(What:=nomCherche2)
          If result1 Is Nothing Or result2 Is Nothing Then
            MsgBox "Nom non trouvé"
          Else
            Set maplage = .Range(result1, result2.Offset(0, 1))
            maplage.Copy Sheets("10 - Zoom station").Range("A23")
            Sheets("10 - Zoom station").Activate
            Sheets("10 - Zoom station").Range("A23").Select
          End If
        End With
      End Sub
      0
      1. Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        Ca marche du feu de dieu !! C'est tout a fait ce qu'il me fallait !! Merci beaucoup de ton aide !
        0
  2. Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
     
    ton code marche très bien!! Je l'ai repris pour mes valeurs et c'est impeccable.

    J'ai voulu refaire la meme chose pour aller definir une plage sur une autre feuille mais il ne me prends pas la plage en question et je ne sais pas ou il prends les valeurs que je lui demande ...

    Désolée de t'embeter encore ...

    Le code est le suivant :

    Dim result1 As Range
    Dim result2 As Range
    Dim resultVitessA1 As Range
    Dim resultVitessA2 As Range
    Dim resultVitessR1 As Range
    Dim resultVitessR2 As Range
    Dim maplage As Range
    Dim maplageVitesseA As Range
    Dim maplageVitesseR As Range
    Dim nomCherche1 As Variant
    Dim nomCherche2 As Variant
    Dim PKCherche1 As Variant
    Dim PKCherche2 As Variant
    
    nomCherche1 = ActiveSheet.Cells(4, 1).Value
    nomCherche2 = ActiveSheet.Cells(5, 1).Value
    PKCherche1 = Sheets("10 - Zoom station").Cells(4, 2).Value
    PKCherche2 = Sheets("10 - Zoom station").Cells(5, 2).Value
      
    Set result1 = Sheets("3 - Data 2").Range("C10:C100").Find(What:=nomCherche1)
    Set result2 = Sheets("3 - Data 2").Range("C10:C100").Find(What:=nomCherche2)
    
    
    
    ' ton code que j'ai repris
    If result1 Is Nothing Or result2 Is Nothing Then
        MsgBox "Nom non trouvé"
    Else
        Set maplage = Sheets("3 - Data 2").Range(result1, result2.Offset(0, 1))
        maplage.Copy Sheets("10 - Zoom station").Range("A10")
        Sheets("10 - Zoom station").Activate
        Sheets("10 - Zoom station").Range("A10").Select
    End If
    
        'Plage pour récuperer les valeurs de vitesse
                'Aller
                
    'Le meme code mais appliqué à une autre feuille de mon classeur
    With Sheets("Headway|Vitesse")
        Set resultVitessA1 = .Range("A3:A2000").Find(What:=PKCherche1)
        Set resultVitessA2 = .Range("A3:A2000").Find(What:=PKCherche2)
        If resultVitessA1 Is Nothing Or resultVitessA2 Is Nothing Then
          MsgBox "PK non trouvé"
        Else
          Set maplageVitesseA = .Range(resultVitessA1, resultVitessA2.Offset(0, 1))
          maplageVitesseA.Copy Sheets("10 - Zoom station").Range("A22")
          Sheets("10 - Zoom station").Activate
          Sheets("10 - Zoom station").Range("A22").Select
        End If
      End With
     


    Et la première valeur qu'il me copie me donne : 0.95 alors que c'est sensé être pour cet exemple 18...
    Je ne vois pas ou j'ai pu faire l'erreur ca marche dans le premier cas et la ca ne fonctionne plus ...

    Help me, I don't understand ...

    Merci beaucoup
    0
    1. Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      J'ai trouvé pourquoi !! C'est parce qu'il regarde dans mes cellules et ce sont des formules du coup il regarde dans la formule et non la valeur de la cellule directement. Si quelqu'un sait comment contourné le problème ...
      0
      1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783 > Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
         
        Bonjour,

        Effectivement il n'y a pas de raison que ça ne fonctionne pas.
        Cependant la première recherche se faisant sur une plage de 90 cellules, je trouve bizarre que tu copies la seconde plage en A22 au risque d'écraser une partie de la copie précédente.
        Et d'autre part pour copier les valeurs à la place des formules, remplaces :
        maplageVitesseA.Copy Sheets("10 - Zoom station").Range("A22")

        par
        With maplageVitesseA
          'si besoin pour copier les format et sinon sans cette ligne ::
          .Copy Sheets("10 - Zoom station").Range("A22")
          ' et pour copier les valeurs :
          Sheets("10 - Zoom station").Range("A22").Resize(.Rows.Count, .Columns.Count).Value = .Value
        End With


        :
        0
      2. Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention   > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        La première recherche se fait sur une plage de 90 valeurs mais j'en copie tout au plus 6/8 c'est pour ca que je mets ma deuxieme plage en A22 .Merci pour ton aide je vais essayer de ce pas ta solution.
        Merci beaucoup
        0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Je m'aperçois que l'aide que je t'avais apporté n'a servi a rien concernant la fonction Find
    puis je caresser l'espoir que tu daignes regarder l'exemple que je t'ai donné donnant la syntaxe de cette fonction?
    https://forums.commentcamarche.net/forum/affich-33950067-petit-soucis-avec-la-fonction-vlookup

    Set resultVitessA1 = .Range("A3:A2000").Find(What:=PKCherche1
    est une erreur de syntaxe:
    si la valeur cherchée PKCherche1 se trouve en A3, la réponse ne donnera pas la cellule A3 (peut-^tre Ax)
    a toi de voir pourquoi puisque ca ne sert à rien de passer du temps à t'aider

     Michel
    0
    1. Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      Certes je n'ai pas réutiliser la solution que tu avais proposé mais ce n'est pas pour cela que m'aider ne sert à rien , j'ai utilisé la fonction qui m'a été propsé sur cette page qui marche pile comme je le voulais, ne te vexe pas qu'on n'utilise pas que les solution que tu propose Michel_m
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
         
        Ah bon ?
        et pourquoi
        Et la première valeur qu'il me copie me donne : 0.95 alors que c'est sensé être pour cet exemple 18...
        Je ne vois pas ou j'ai pu faire l'erreur ca marche dans le premier cas et la ca ne fonctionne plus ...


        décidément, nul et au choix...
        0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    et bien sûr Microsoft a forcément tort, puisque Feudora le dit, quand il écrit

    0
    1. Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
       
      Je n'ai pas dit que j'avais la science inffuse mais la méthode que Patrice33740 focntionne très bien pour ma première partie donc il ne faut pas prendre la mouche si je n'ai pas écouté tes conseils et que j'ai pris le code de Patrice33740 ...
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Feudora Messages postés 82 Date d'inscription   Statut Membre Dernière intervention  
         
        je n'ai rien contre le code de Patrice mais je signale que la syntaxe de la fonction FIND est erronée car il manque le paramètre AFTER que je t'avais communiquer et ,en plus, tu as ci-dessus la documentation MICROSOFT (il faut un clic sur l'image pour l'agrandir)
        Ce que je t'avais proposé est simplement une démo pour ne pas utiliser Vlookup et tu ce que tu demandes dans cette nouvelle discussion va plus loin !!!

        c'est pas possible d'être aussi têtu et dédaigneux de l'aide qu'on apporte
        essaies le macramé, ca ira mieux
        0
      2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783 > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour Michel,

        N'ayant pas d'autres informations que celles de ce post, j'ai supposé qu'il cherche la première occurrence et dans ce cas le paramètre After est facultatif.
        Son problème semble plutôt lié au fait qu'il copie des formules au lieu de copier les valeurs.

        Très cordialement
        Patrice
        0