Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème VBA déclaration

    20 juin 2017 à 8:41:49

    bonjour

    j'ai commencer a écrire un programme en VBA qui selon un critère que je lui impose il doit déplacer la ligne dans une autre feuille je rencontre un problème au niveau de la déclaration de ma variable dans la boucle. je vous met le code :

    Sub Macro2()

    Dim ma_variable

    Dim ma_boucle

    Dim nb_particule

    nb_particule = 5

    For ma_boucle = 1 To nb_particule

        If 2.3 <= Range("Ama_boucle") <= 2.7 And 1.7 <= Range("Bma_boucle") <= 2 Then

        ActiveCell.FormulaR1C1 = Rows("ma_boucle")

        ActiveCell.Offset(1#).Sheet("feuille2").Select

        End If

    Next ma_boucle

    End Sub

    voila donc j'explique un peux dans ma boucle for j'ai placé une condition, je veux que si la céllule A1 et B1 respecte la condition bornée il l'écrive dans la feuille 2 sinon rien. l’erreur est sur ma déclaration de If et je pense que je déclare mal ma cellule mais je vois pas comment je pourrais faire autrement pour qu'il change de ligne quand il recommence ma boucle.
    quelqu'un aurait t'il une solution?
    Merci d'avance pour votre aide
    Jordy
    • Partager sur Facebook
    • Partager sur Twitter
      20 juin 2017 à 9:35:34

      Bonjour,

      tu ne te sert pas de la valeur "ma_boucle" mais d'une chaine ou est écrit "ma_boucle" et tes test dans le if sont un peu bancale...

      if ((2.3 <= Range("A" & ma_boucle)) And (Range("A" & ma_boucle) <= 2.7) And (1.7 <= Range("B" & ma_boucle)) And (Range("B" & ma_boucle) <= 2) Then
      
      ActiveCell.FormulaR1C1 = Rows(ma_boucle)
      
      ActiveCell.Offset(1#).Sheet("feuille2").Select
      
      End If

      Je n'es pas tester mais ça ne devrais pas être loin

      Mathieu

      • Partager sur Facebook
      • Partager sur Twitter
        20 juin 2017 à 9:58:59

        merci pour ton aide le code n'indique plus d'erreur mais je comprend pas pourquoi quand la condition est respecté il ne copie pas la ligne dans la feuille 2

        j'ai test ça aussi

            Rows(ma_boucle).Select

            Selection.Copy

            Sheets("Feuil2").Select

            Rows(ma_boucle).Select

            ActiveSheet.Paste

        mais pareil cela ne copie pas

        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2017 à 10:17:01

          Peut être un probleme dans ton 1er "Select" il n'est peut être pas sur la bonne feuille

          Sinon tu as plus simple,

          ThisWorkbook.Worksheets("Feuil2").Range("A" & ma_boucle & ":ZZ" & ma_boucle).Value = ThisWorkbook.Worksheets("Feuil1").Range("A" & ma_boucle & ":ZZ" & ma_boucle).Value
          ThisWorkbook.Worksheets("Feuil2").Rows(ma_boucle).Value = ThisWorkbook.Worksheets("Feuil1").Rows(ma_boucle).Value


          la 1ere tu copie de A à ZZ de feuille 1 a feuille 2

          la 2eme tu copie toute la ligne de feuille 1 a feuille 2

          • Partager sur Facebook
          • Partager sur Twitter
            20 juin 2017 à 10:51:45

            Merci cela marche très bien du point de vu du copié coller je pense que j'ai un problème avec ma condition 

            j'ai mis comme exemple ses valeurs : il devrait me copié la ligne 1 et 2 or il copie rien

            2.35 1.55
            2.36 1.68
            2.8 1.85
            2.65 2.17
            2.9 1.98

            autan pour moi je suis bête j'ai mis 1.7 le min donc aucun ne marche j'ai test avec d'autre valeurs et ça marche j'ai honte d’avoir fait cette bêtise.

            Merci infiniment pour ton aide et bonne journée

            -
            Edité par Shaldos 20 juin 2017 à 11:10:41

            • Partager sur Facebook
            • Partager sur Twitter
              21 juin 2017 à 15:25:41

              j'ai un deuxième soucis au niveau du copier coller, j'ai créé une boucle qui me créé des feuilles de calcul dans excel allant de 1 jusqu'à un nb de groupe

              en faite il me colle pas les valeurs dans la bonne feuille qui correspond au bon groupe et il me change même les valeurs de ma page de référence ellipse1 je vous met mon code si jamais je suis pas clair n'hésiter pas a poser des questions.

              Sub class_ellipse()
              Dim ma_boucle
              Dim nb_particule
              nb_particule = 6824
              Dim n
              Dim i
              Dim j
              Dim m
              Dim pas
              Dim pas_b
              pas_b = 1.3
              Dim nb_groupe_j
              nb_groupe_j = 27
              Dim nb_groupe_i
              nb_groupe_i = 42
              Dim nb_feuille
              nb_feuille = 1
              Dim shtoto As Worksheet
              Dim nb_goupe_f
              nb_groupe_f = nb_groupe_i * nb_groupe_j
              
              For m = 1 To nb_groupe_f
                  Set shtoto = Sheets.Add(After:=Sheets(Sheets.Count))
                  shtoto.Name = nb_feuille
                  nb_feuille = nb_feuille + 1
              Next m
              nb_feuille = 1
              Sheets("ellipse1").Select
              For j = 1 To nb_groupe_j
              pas = 2.3
                  For i = 1 To nb_groupe_i
                  n = 2
                      For ma_boucle = 1 To nb_particule
                          If ((pas <= Range("W" & ma_boucle)) And (Range("W" & ma_boucle) < pas + 0.4) And (pas_b <= Range("X" & ma_boucle)) And (Range("X" & ma_boucle) < pas_b + 0.4)) Then
                          ThisWorkbook.Worksheets(nb_feuille).Rows(n).Value = ThisWorkbook.Worksheets("ellipse1").Rows(ma_boucle).Value
                          n = n + 1
                          End If
                      Next ma_boucle
                  nb_feuille = nb_feuille + 1
                  pas = pas + 0.4
                  Next i
              pas_b = pas_b + 0.4
              Next j
              
              End Sub



              • Partager sur Facebook
              • Partager sur Twitter
                22 juin 2017 à 19:45:10

                Bonjour,

                A première vue, je vois un  problème lié à la ligne 39, utile pour la ligne 35.

                Tu dois ajouter une exclusion si Sheets(nb_feuille).name ="ellipse1".

                ' à insérer entre ligne 39 et 40
                If Sheets(nb_feuille).Name = "ellipse1" Then
                
                '    ...l'action que tu veux faire si c'est le cas...
                
                ' Je pense que mettre
                nb_feuille = nb_feuille +1
                ' serait bien ici
                
                End If

                -
                Edité par Tr!ck 22 juin 2017 à 19:49:38

                • Partager sur Facebook
                • Partager sur Twitter
                  26 juin 2017 à 9:52:17

                  Merci mais mon problème était sur le nom des feuilles il faut pas les nommé 1,2,3... faut donner un nom spécifique  genre groupe_1 .... 

                  pour que la commande reconnaisse le nom 

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Problème VBA déclaration

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown