Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Bonsoir,

Voilà quelques heures que je me bat pour écrire ce bout de code qui consiste à copier les valeurs supérieurs à 100 d'une plage donnée dans la colonne 2.

Voici mon code qui génère une erreur :

 

Sub Trier_tableau()

Dim lig As Range

Dim col As Range

lig = 6 ' démarre à la ligne 6

col = 2 ' la valeur trouvée dans lig sera copiée dans colonne 2

lig("a6:a100").Select

 

For Each lig In Selection

 

If lig.Value > 100 Then

Range(lig).Copy Range(col)

lig = lig + 1

End If

 

Next

End Sub

 

Une personne charitable peut elle me dire où celà achope ?

 

Merci d'avance

Posté(e) (modifié)

Bonsoir,

 

attention tu confonds le type Range et le type Integer ici !!!

 

En fait si ta plage que tu compares à 100 est fixe, tu n'as pas besoin de lig et col comme tu l'entends, car la boucle for each parcoura cette plage cellule par cellule. En revanche, tu as besoin d'un compteur pour la copie dans la colonne 2 :

Sub Trier_tableau()
Dim compteur as Integer
compteur=1
Range("a6:a100").Select 'MODIFICATION FAITE

For Each Cell In Selection 'MODIFICATION FAITE

If Cell.Value > 100 Then
Cells(compteur, 2).value=cell.value 'je recopie la valeur de la cellule en question dans la colonne 2 si sa valeur est supérieure à 100
compteur = compteur + 1 'j'incrémente mon compteur pour passer  au rang suivant dans la colonne 2
End If

Next
End Sub

 

Dis moi si ça marche,

 

bon courage,

 

Ayoros.

Modifié par Ayoros
Posté(e)

Merci Ayoros, mais j'ai toujours une erreur du type " variable non définie". Quand je débogue au pas à pas détaillé le curseur vient sur cell.

 

Voici le code :

 

Sub Trier_tableau()

Dim compteur As Integer

compteur = 1

Range("a6:a100").Select

For Each Cell In Selection

 

If Cell.Value > 100 Then

Cells(compteur, 2).Value = Cell.Value

compteur = compteur + 1

End If

 

Next

 

End Sub

Posté(e) (modifié)

Ce code fonctionne très bien chez moi, j'ai rajouté l'activation du premier onglet :

Sub Trier_tableau()
Dim compteur As Integer
compteur = 1
Sheets(1).Activate
Range("A6:A111").Select
For Each Cell In Selection

If Cell.Value > 100 Then
Cells(compteur, 2).Value = Cell.Value
compteur = compteur + 1
End If

Next

End Sub

 

Je suis sous Excel 2003 XP sp2

Modifié par Ayoros

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...