Copier coller plage de cellule variable excel vba [Fermé]

Signaler
Messages postés
24
Date d'inscription
mardi 9 février 2016
Statut
Membre
Dernière intervention
28 avril 2018
-
Gyrus
Messages postés
3341
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
-
Bonjour,
j'ai un problème dans ma macro excel mais je ne sais pas où.
Elle doit :
Sélectionner la colonne C entre les lignes g et h (cf macro)
Normalement les valeurs sont dans l'ordre croissant
Copier la sélection et la coller (cf macro)
Le critère de sélection se trouve dans la colonne E et doit être compris entre 2 valeurs d'une autre feuille (cf macro)

Sub Nom()
Dim a As Range
Dim b As Range
Dim c As Range
Dim d As Range
Dim e As Range
Dim f As Range
Dim g As Integer
Dim h As Integer

Sheets("Paramètres").Select
a = Range("S3").Select
b = Range("T3").Select

Sheets("Name").Select
For i = 2 To 500
c = Range("E" & i).Select

If c >= a Then
g = i
d = Range("C" & g).Select
Exit For
End If
Next i

For j = g To 500
e = Range("E" & j).Select

If e >= Range("E" & g).Select Then
If e <= b Then
If (Range("E" & j + 1).Select > e) Then

Else
h = j
f = Range("C" & h).Select
Exit For
End If
End If
End If
Next j

Range("C" & g & ":C" & h).Select

Application.CutCopyMode = False
Selection.Copy
Range("I2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

End Sub


3 réponses

Messages postés
3341
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
461
Bonjour,

Ton code a besoin d'un bon coup de balayette (par exemple, il ne devrait y avoir aucun Select).

Pour permettre aux intervenants de t'aider efficacement, je te conseillerais de joindre un fichier et quelques explications sur le résultat attendu.


Pour cela, tu peux utiliser http://www.cjoint.com/

A+
flavinou7263
Messages postés
24
Date d'inscription
mardi 9 février 2016
Statut
Membre
Dernière intervention
28 avril 2018

Merci mais jai résolu mon problème de code.
Juste pour confirmation, pour exécuter ce code je dois bien faire ca :
Sub calcul()
Call Nom
End Sub
Gyrus
Messages postés
3341
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
461 > flavinou7263
Messages postés
24
Date d'inscription
mardi 9 février 2016
Statut
Membre
Dernière intervention
28 avril 2018

Dans ce cas, l'utilisation de Call pour appeler la procédure n'est pas recommandée.
Tu peux te contenter d'écrire :
Sub calcul()
Nom
End Sub


A+
flavinou7263
Messages postés
24
Date d'inscription
mardi 9 février 2016
Statut
Membre
Dernière intervention
28 avril 2018

Même dans le cas d'une macro avec une dizaine de Sub ?
Gyrus
Messages postés
3341
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
461 > flavinou7263
Messages postés
24
Date d'inscription
mardi 9 février 2016
Statut
Membre
Dernière intervention
28 avril 2018

Même pour une vingtaine ;)

Call est généralement utilisé lorsque l'expression appelée ne commence pas par un identificateur (ou par certains programmeurs pour rendre l'instruction plus "lisible").

A+
Messages postés
24
Date d'inscription
mardi 9 février 2016
Statut
Membre
Dernière intervention
28 avril 2018

Mais ca ne change rien ?

--
Messages postés
3341
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
461
Ben non ! ... mais tu peux toujours essayer ...... on ne sait jamais !
(Tu ne serais pas du genre inquiet ? :D)

A+