Probleme boucle for...

Résolu
alphonse -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
La boucle ci dessous ne copie rien... Pourquoi ?
Je parcours de B46 à B51 et je copie et je colle dès la première ligne vide.

Dim compteur, compteur3 As Double

(... compteur qui marche bien...)
...
...
compteur3 = 46
For compteur3 = 46 To 51

If (B & compteur3 = "") Then
Sheets("Tableau").Range("A & compteur : W & compteur").Copy Sheets("Tableau").Range("A & compteur3")
compteur3 = 51
Else
compteur3 = compteur3 + 1
End If

Next compteur3

6 réponses

  1. Aktayen Messages postés 189 Date d'inscription   Statut Membre Dernière intervention   20
     
    je ne sais pas trop le langage c'est mais dans beaucoup il faut mettre un double égal dans un if
    If (B=="" & compteur3 == "") 
    0
  2. alphonse
     
    Merci, mais c'est en VB, ce n'est pas nécessaire je crois.
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour
    compteur3 on connait, OK mais compteur ?

    dans la cible de copy il faut que la surface soit la m^me de plus ta syntaxe est fausse
    Copy Sheets("Tableau").Range("A" & compteur3 & ":W" & compteur3)
    m^me punitopn pour la source
    0
  4. alphonse
     
    Merci michel de ton aide, pour ta modification de syntaxe qui me sera sans doute utile... Mais le résultat est le même ... Rien...

    Compteur est un autre chiffre qui fonctionne très bien et calculé et utiliséà travers de nombreuses pages.

    Qu'entends tu par "dans la cible de copy, il faut que la surface soit la même" ?

    si compteur = 45 et compteur3 = 46
    Je copie (A45:A45) dans (A46)

    Je ne vois toujours pas mon erreur...
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. alphonse
     
    Je teste même sur un feuille totalement vierge

    Private Sub CommandButton1_Click()
    Dim compteur3 As Double
    compteur3 = 46

    For compteur3 = 46 To 51

    If (B & compteur3 = "") Then
    Sheets("Feuil1").Range("A1:W1").Copy Sheets("Feuil1").Range("A" & compteur3)
    compteur3 = 51
    Else
    compteur3 = compteur3 + 1
    End If

    Next compteur3

    End Sub

    Le résultat et encore une fois le même... Rien...
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Tu as lu ce que je t'ai marqué ?
      Voici la ligne en entier !!!
      Copy Sheets("Tableau").Range("A1":W1 )Copy Sheets("Tableau").Range("A" & compteur3 & ":W" & compteur3) 


      d'ailleurs, Tu aurais pu marquer (valeurs uniquement)
      With Sheets("tableau") 
           .Range("A1:W1") = .Range("A" & compteur3 & ":W" & compteur3).Value 
      End With

      de plus, tu n'as pas besoin de boucle pour faire ta copie...
      cette instruction te donne la ligne de la première cellule vide colonne B
      ligne_vide = Range("B46").End(xlDown).Row + 1
      0
  7. alphonse
     
    Merci Michel.
    J'ai trouvé mon erreur... J'avais en plus oublié le Cells.Value... ça marche, mais c'est pas optimisé et donc que ça me bloque pour la suite. L'idée du "ligne_vide = Range("B46").End(xlDown).Row + 1" à l'air pas mal...

    Le soucis c'est que :
    Sheets("Tableau").Range("A" & compteur & ":W" & compteur).Copy Sheets("Tableau").Range(ligne_vide)

    Le code fonctionne :
    Dim compteur3 As Double
    compteur3 = 46

    For compteur3 = 46 To 51

    If (Cells(B & compteur3).Value = "") Then
    Sheets("Tableau").Range("A" & compteur & ":W" & compteur).Copy Sheets("Tableau").Range("A" & compteur3)
    compteur3 = 51
    Else
    compteur3 = compteur3 + 1
    End If

    Next compteur3

    End If
    End If
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,
      décidément, tu as l'air bien tétu

      abandon du suivi
      0