Pb avec un range select

Résolu
charly2812 Messages postés 37 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 22 mai 2008 - 22 nov. 2007 à 12:29
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 - 22 nov. 2007 à 16:00
bonjour,
alors voici mon problème:
sqna une macro j'effectue une boucle pour trouver une certaine valeur, je recupère le numéro de la colonne où se trouve cette valeur (j).
j'aimerais ensuite utiliser un range().select pour pouvoir faire un copier coller (special, valeur) de toute la collone, puis de la colonne i+1 et enfinn de la colonne i+2.

je ne trouve pas la syntaxe pour le renge().select avec une variable à l'intérieur du range.

merci de votre aide.

3 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
22 nov. 2007 à 16:00
Ce que tu as écrit ne peut pas fonctionner puisque la valeur de i sera toujours égale à 200, en effet, tu ne sors pas de ta boucle, donc elle défile jusqu'au bout.
Donc soit tu utilises ton Range avec j en variable comme tu as fait, soit tu sors de la boucle dès que tu as trouvé et dans ce cas, tu utilises le i
 For i = 1 To 200
        If Worksheets("Ventas").Cells(4, i) = "Atraso" Then
            j = i
            exit for
        End If
 Next i

Ensuite, ça ne peut pas fonctionner parce que i est un entier (un chiffre compris entre 1 et 200) alors qu'avec le range, tu dois désigner la colonne par une lettre.
Utilise plutôt 2 Cells dans un range pour déterminer une plage les deux cellules opposées
En plus, tu veux faire un copier/coller de la colonne i, i +1 et i + 2, suffit donc de faire un copier/coller de la plage (i 1 à i+2 10000), soit :

Range(cells(1,i),cells(10000,i+2)).copy
Range("A2").PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

Normalement, ça doit suffire. Je le fais de tête sans vérifier, avec les explications, si j'ai fait une erreur, tu devrais trouver ^^

Molenn
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 nov. 2007 à 12:37
salut de quelle maniere effectues tu la recherche?

sinon essaies en utilisant Cells et non range.

@+: Ju£i?n
Pensez: Réponse acceptée
0
charly2812 Messages postés 37 Date d'inscription mercredi 1 mars 2006 Statut Membre Dernière intervention 22 mai 2008 1
22 nov. 2007 à 12:40
voila mon code 

    Sheets("Demanda cliente").Select
    Workbooks.Open Filename:=Worksheets("Demanda cliente").Range("A1").Value
   
    For i = 1 To 200
        If Worksheets("Ventas").Cells(4, i) = "Atraso" Then
        j = i
        End If
    Next i
  
Range(i & "1:" & i & "10000").Select
    Selection.Copy
    ActiveWindow.ActivateNext
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Range("A2").Select
    ActiveWindow.ActivatePrevious
    Application.CutCopyMode = False
0
Rejoignez-nous