[Resolu] Problème avec next sans for et double boucle

Koji

XLDnaute Nouveau
Bonjour à tous,

J'ai cherché de trouver s'il n'y avait pas une solution dans les différents postes précédents concernant le même probleme, mais je n'ai pas vraiment trouvé, j'ai tatoné mais j'ai reviens au même probleme.

Le code est sensé, regardé sur la feuille "cdt" si dans la colonne 13 (M) il trouve la valeur #N/A et si c'est le cas, copié la valeur des cases A, B, C et E.
Puis changé de feuille, passé sur "inject"
Créer une ligne en dessous de la derniere ou il y a quelques choses d'écrit
et inscrire les valeurs de A, B, C et E, dans les cases de la ligne insérer la valeur de A en j,A; B en j,B; E en j,D; et C en j,F
Puis recommencé pour un nouveau i et un nouveau j

Mais la il me dit: Next sans for pour le i

C'est surement du code grossier que j'utilise mais c'est le seul que je sais faire pour le moment, mais si vous voulez proposer autre chose, je prend, tant que le résultat du programme est le même.

Je suppose que c'est lié soit au for, soit au if, mais je ne saurai lequel..

Précision: je ne sais pas si c'est utile de le dire, mais j'ai écris mon code dans le module sur la feuille "inject"

Code:
Sub entrée_ligne()
Dim i As Integer
Dim j As Integer
Dim A, B, C, E As String

' recherche des valeurs "#N/A" dans la feuille cdt

With Worksheets("cdt").Select

For i = 10 To 600
If Cells(i, 13) = "#N/A" Then
A = Cells(i, 1)
B = Cells(i, 2)
C = Cells(i, 3)
E = Cells(i, 5)

'ajout d'une ligne et insertion des valeurs dans différentes cases

With Worksheets("inject").Select

For j = 75 To 200
If Cells(j, 2) = "" Then Cells(j, 2).EntireRow.Insert
Cells(j, 1) = A
Cells(j, 2) = B
Cells(j, 4) = E
Cells(j, 6) = C


Next j
Next i

End With
End Sub

D'avance merci pour l'aide.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Problème avec next sans for et double boucle

Bonjour,

A priori dans ton code il manque un "end if" et un "end with".... Préférable de placer ce code dans un module standard plutôt que dans un module de feuille...
perso je coderais plut^t comme ceci :
Code:
With Worksheets("cdt")
    For i = 10 To 600
        If .Cells(i, 13) = "#N/A" Then
        A = .Cells(i, 1)
        B = .Cells(i, 2)
        C = .Cells(i, 3)
        E = .Cells(i, 5)
    End If
End With
bon après midi
@+
 

Koji

XLDnaute Nouveau
Re : Problème avec next sans for et double boucle

Merci pour cette réponse, j'ai remplacé le bout de code par ce que vous m'avez donné, mais maintenant il me dit: "end with sans with" des le premier "with" apres la boucle i

J'ai bien mis un end if aussi pour la 2eme partie...

Code:
Sub entrée_ligne()
Dim i As Integer
Dim j As Integer
Dim A, B, C, E As String

' recherche des valeurs "#N/A" dans la feuille cdt

With Worksheets("cdt")
    For i = 10 To 600
        If .Cells(i, 13) = "#N/A" Then
        A = .Cells(i, 1)
        B = .Cells(i, 2)
        C = .Cells(i, 3)
        E = .Cells(i, 5)
    End If
End With

'ajout d'une ligne et insertion des valeurs dans différentes cases

With Worksheets("inject")

For j = 75 To 200
    If Cells(j, 2) = "" Then Cells(j, 2).EntireRow.Insert
    Cells(j, 1) = A
    Cells(j, 2) = B
    Cells(j, 4) = E
    Cells(j, 6) = C
    End If
End With

Next j
Next i


End Sub
 

Orodreth

XLDnaute Impliqué
Re : Problème avec next sans for et double boucle

Bonjour Koji, bonjour Pierrot,

Il manque une toute petite ligne dans le code de Pierrot, alors même qu'il t'a mis en garde sur ce point précis.

Petite correction:
Code:
With Worksheets("cdt")
    For i = 10 To 600
        If .Cells(i, 13) = "#N/A" Then
            A = .Cells(i, 1)
            B = .Cells(i, 2)
            C = .Cells(i, 3)
            E = .Cells(i, 5)
        End If
    next i
End With
 

Pierrot93

XLDnaute Barbatruc
Re : Problème avec next sans for et double boucle

Re,

essaye ainsi, mais pas sûr que tu obtiennes le résultat que tu cherches...
Code:
Sub entrée_ligne()
Dim i As Integer
Dim j As Integer
Dim A, B, C, E As String
' recherche des valeurs "#N/A" dans la feuille cdt
For i = 10 To 600
    With Worksheets("cdt")
        If .Cells(i, 13) = "#N/A" Then
            A = .Cells(i, 1)
            B = .Cells(i, 2)
            C = .Cells(i, 3)
            E = .Cells(i, 5)
        End If
    End With
    'ajout d'une ligne et insertion des valeurs dans différentes cases
    For j = 75 To 200
        With Worksheets("inject")
            If .Cells(j, 2) = "" Then
                .Cells(j, 2).EntireRow.Insert
                .Cells(j, 1) = A
                .Cells(j, 2) = B
                .Cells(j, 4) = E
                .Cells(j, 6) = C
            End If
        End With
     Next j
Next i
End Sub

edition : bonjour Orodreth:), oui tu as raison, peut être le next i à déplacer....
 
Dernière édition:

Orodreth

XLDnaute Impliqué
Re : Problème avec next sans for et double boucle

Re,

Par rapport au problème énoncé, je ferais plutôt comme ceci:

Code:
Sub entree_ligne() 'correction 1 => pas d'accent dans les noms de variables ou procédures
Dim i As Integer
Dim j As Integer
Dim A, B, C, E As String
' recherche des valeurs "#N/A" dans la feuille cdt
For i = 10 To 600
    With Worksheets("cdt")
        If .Cells(i, 13) = "#N/A" Then
            Dim j as long
            
            'On détermine la première ligne vide du tableau en partant de la fin
            j = Worksheets("inject").Range("B" & cstr(Application.rows.count)).end(xlup).row + 1
            If j < 75 then 
                j = 75
            end if

            Worksheet("inject").Cells(j, 1).value = .Cells(i, 1)
            Worksheet("inject").Cells(j, 2).value = .Cells(i, 2)
            Worksheet("inject").Cells(j, 4).value = .Cells(i, 3)
            Worksheet("inject").Cells(j, 6).value = .Cells(i, 5)
        End If
    End With
Next i
End Sub
 
Dernière édition:

Koji

XLDnaute Nouveau
Re : Problème avec next sans for et double boucle

Merci pour votre aide, mais je pense que mon code pose probleme car mon fichier pose probleme en fait.

Tout d'abord, j'ai essayé vos 2 programmes, celui de Pierrot boucle sur les j, et celui d'orodreth m'indique "sub ou function non définie" (je pense qu'il fallait des "s" au worksheets(inject), je les ai rajoutés et apres il me disait: "l'indice n'appartient pas à la selection"

Mais je pense que cela vient du problème plus globale de mon fichier que je vous indique ci dessous

le #N/A provient d'une recherche
Code:
M50=RECHERCHEV($D50;inject!$C$3:$G$195;1;FAUX)
en gros vu qu'il ne me trouve pas ma valeur il "affiche" N/A. Cette recherche est étirée à toute les lignes ou il y a des valeurs..

Mais en fait vu que la valeur de la cellule n'est pas "#N/A" mon code ne marche pas, il faudrait que je fasse la recherche de la valeur dans mon programme vba.

Donc je pense que ma demande de base ne vaut rien et merci pour votre aide...

Si vous avez le temps, je suis à l'écoute d'une solution.

En gros, je ne sais pas si ca se fait, mais rajouté une ligne au progamme, qui dit de faire la recherche et que s'il ne trouve pas fasse l'écriture que j'avais fait, précédement.

Merci encore pour votre aide, et je vais tenter des recherches..
 

Si...

XLDnaute Barbatruc
Re : Problème avec next sans for et double boucle

salut

dans la page de code de la feuille "cdt" avec tes bornes
Code:
Sub Ajout()
  Dim i As Long, j As Long
  With Worksheets("inject")
    For i = 10 To 600 'adapter la plage
      If IsError(Cells(i, 13)) Then
        For j = 75 To 200 'adapter la plage
          If .Cells(j, 2) = "" Then  'adapter la colonne
            .Rows(j).Insert  'à voir
            .Cells(j, 1) = Cells(i, 1)
            .Cells(j, 2) = Cells(i, 2)
            .Cells(j, 4) = Cells(i, 5)
            .Cells(j, 6) = Cells(i, 3)
            Exit For
          End If
        Next
      End If
    Next
  End With
End Sub

Remarque : avec la déclaration Dim A, B, C as String A et B sont des Variants !
 

Koji

XLDnaute Nouveau
Re : Problème avec next sans for et double boucle

Malheureusement non, ce sont des données pro...

Merci, si.... tu as réussi a faire ce que je voulais.

Et merci aux autre pour les réponses d'avant, désolé de ne pas avoir pu etre plus précis..

Comment indiqué que la discussion est résolu?
 

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG