Flux rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Pb boucle For - Excel VBA

Ian Curtis, le mercredi 19 mars 2008 à 11:39:52
Bonjour à tous,

J'ai un petit problème dans mon programme en VBA, lorsque je l'execute, le programme ne bug pas mais il ne fonctionne pas pour autant.
En faite, j'ai un tableau Excel dans lequel je voudrais balayer toutes les lignes de la colonne "C", dès qu'une ligne comporte une valeur différente d'un entier compris entre 1 à 99, la valeur de cette cellule doit être remplacer par la cellule voisine de la colonne "D".
Je pense que le problème vient de cette boucle "For y = 1 To y = 99
Next y"

Voici ci dessous le programme complet

Dim Cell As Range
Dim x As Integer
Dim y As Integer
x = 7
y = 1

For Each Cell In Range("c7:c1000")
x = x + 1

For y = 1 To y = 99
If Cell.Value = y Then Cell.Value = Cells(x, 4)
Next y

Next Cell
End Sub



Merci d'avance
Cordialement Ian Curtis
Configuration: Windows XP
Internet Explorer 6.0
Répondre à Ian Curtis  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Frappe Misere, le mercredi 19 mars 2008 à 11:45:28
essaie avec :
if Cell.Value >0 and Cell.Value <100
à la place de ton for. Knowledge is power.
Répondre à Frappe Misere

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 12:10:42
Bonjour FrappeMisère,

Je tenais à te remercier pour ta réponse, en effet ça fonctionne nettement mieux, par contre, je n'ai pas pris la bonne direction dans mon raisonnement. En faite, pour être vraiment précis, c'est que dès qu'une cellule dans ma colonne "C" comporte un chiffre à Virgule (et non plus un entier) celui-ci doit être remplacé par la valeur de la cellule voisine en colonne "D"


Il me faudrait donc un truc dans ce genre :

if Cell.Value Not integer Then Cell.Value = Cells(x, 4)


Merci d'avance
Cordialement Ian Curtis
Répondre à Ian Curtis

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Frappe Misere, le mercredi 19 mars 2008 à 12:13:24
if Cell.Value like *.* then...
là j'ai mis le point, mais si tu utilises la virgule, tu as juste à remplacer.
Knowledge is power.
Répondre à Frappe Misere

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 12:23:34
Encore merci pour ton aide,

Alors, j'ai testé avec ta ligne "if Cell.Value like *.*" mais le compilateur me renvoi une erreur de Syntaxe avec l'étoile (*).

Bizarre....

Sinon J'utilise bien le point à la place de la virgule.
Répondre à Ian Curtis

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Frappe Misere, le mercredi 19 mars 2008 à 12:39:04
j'ai peut etre oublié les "
essaie avec "*.*" Knowledge is power.
Répondre à Frappe Misere

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 12:17:38
Au faite, je n'ai pas touché à mon "for", j'ai directement remplacé mon "If" par la ligne que tu m'a conseillé, voici le prog actuel :

Dim Cell As Range
Dim x As Integer
Dim y As Integer
x = 7


For Each Cell In Range("c7:c1000")
x = x + 1


If Cell.Value > 0 And Cell.Value < 100 Then Cell.Value = Cells(x, 4)


Next Cell
End Sub
Répondre à Ian Curtis

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le mercredi 19 mars 2008 à 12:24:39
bonjour,

pour info : la syntaxe d'une boucle For ... Next est :
For i = 0 to 99
      a = a + i
Next i

Ici a = 100 à la fin de la boucle.

;o)

polux
Répondre à Polux31

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 12:38:23
Merci Polux pour ta réponse, j'ai de nouveau tentais d'ajouter une boucle For avec incrémentation et mon programme fonctionne.

par contre, c'est l'inverse qui doit se produire c'est à dire que si ma cellule comporte un chiffre différent d'un entier compris entre 1 et 99 dans ce cas la valeur de cette cellule doit être remplacée par la valeur de la cellule en colonne D

Dim Cell As Range
Dim x As Integer
Dim y As Integer
x = 7
y = 0

For Each Cell In Range("c7:c1000")
x = x + 1
For y = 0 To 99
a = a + y


If Cell.Value = y Then Cell.Value = y
else Cells(x, 4)

Next y

Next Cell
End Sub




J'ai modifié la partie souligné mais je ne connais pas la structure exacte

Grand grand Merci à vous
Répondre à Ian Curtis

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 12:45:54
Oupssss petite erreur dans mon if (par contre ça ne marche pas pour autant):

If Cell.Value = y Then Cell.Value = y
Else: Cell.Value = Cells(x, 4)


(J'ai tellement pas l'habitude de programmer que j'ai tendance à m'embrouiller l'esprit)
Répondre à Ian Curtis

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Frappe Misere, le mercredi 19 mars 2008 à 12:41:18
laisse la boucle for de coté, tu n'en as pas besoin pour ce que tu veux faire. Knowledge is power.
Répondre à Frappe Misere

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 12:49:47
Ok, Je suis retourner sur ma 1ère version mais comme je te disais tout à l'heure, le compilateur me renvoi une erreur sur cette ligne "If Cell.Value like *.* Then Cell.Value = Cells(x, 4)".

(Encore merci pour ton aide)
Répondre à Ian Curtis

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Frappe Misere, le mercredi 19 mars 2008 à 12:56:55
meme avec des " ?
If Cell.Value like "*.*" then... Knowledge is power.
Répondre à Frappe Misere

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Frappe Misere, le mercredi 19 mars 2008 à 13:04:27
Sub nom_que_tu_veux()
Dim Cell As Range
Dim x As Integer
x = 7

For Each Cell In Range("c7:c1000")

If Cell.Value Like "*.*" Then Cell.Value = Cells(x, 4)
x = x + 1

Next Cell
End Sub

et elle fonctionne. Knowledge is power.
Répondre à Frappe Misere

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 13:28:25
Désolé FrappeMisère de ne pas avoir pus te répondre plus tôt. Alors j'ai essayé avec les guillemets et ça fonctionne.

C'est nickel

Je tiens donc à te remercier pour ton aide bien précieuse.

Cordialement
Ian Curtis
Répondre à Ian Curtis

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 14:00:04
Excuse moi FrappeMisère de te déranger avec ça mais j'ai une dernière question (c'est bien la dernière question, promis)

En faite j'aimerai modifier les cellules d'une autre colonne

Voici le programme actuel :

Dim Cell As Range
Dim x As Integer
Dim y As Integer
x = 1


For Each Cell In Range("c1:c1000")


If Cell.Value Like "*.*" Then Cell.Value = Cells(x, 5)
x = x + 1



Next Cell
End Sub



J'aimerai modifier les cellules de la colonne B mais je ne sais pas si c'est possible voici en gras l'élément que j'ai modifié mais vu que je ne connais pas la syntaxe ça ne peut pas marcher :

If Cell.Value Like "*.*" Then Cell.Value.cells(x, 2) = Cells(x, 5)
x = x + 1

Encore Merci
Cordialement Ian Curtis
Répondre à Ian Curtis

16


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Frappe Misere, le mercredi 19 mars 2008 à 14:50:18
If Cell.Value Like "*.*" Then Cells(x, 5) = Cells(x, 4) Knowledge is power.
Répondre à Frappe Misere

17


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Ian Curtis, le mercredi 19 mars 2008 à 15:28:13
C'est good, ça fonctionne parfaitement

Encore merci

Bonne fin d'après-midi

Cordialement
Ian Curtis
Répondre à Ian Curtis

19


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le lundi 31 mars 2008 à 02:19:28
Bonjour,

Il faut écrire la boucle de recherche dans une fonction qui renvoie True si elle trouve les 2 mots ou False si elle ne trouve pas :
Private Sub CommandButton1_Click() 
Dim Cible As String 

Cible1 = TextBox1.Text 
Cible2 = TextBox2.Text 

If SearchMot(Cible1, Cible2) = True Then
    MsgBox "Oui"
Else
    MsgBox "non"
End If
End Sub

Private Function SearchMot(ByVal c1 As String, ByVal c2 As String) As Boolean
Dim i As Long

For i = 1 To Rows.Count 
    If (InStr(Cible1, Cells(i, 1)) = 1) And (InStr(Cible2, Cells(i, 2)) = 1) Then 
         SearchMot = True
         Exit Function
    Else
         SearchMot = False
    End If 
Next i
End Function


;o)

Polux
Répondre à Polux31

20


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Polux31, le lundi 31 mars 2008 à 02:23:14
oups erreur de post ... :-s ..
Répondre à Polux31
Probleme boucle for macro excel (Résolu)bonjour à tous j'ai un souci pour une macro excel je dois faire une tache répétitive: recopier et coller 12 fois le contenu d'un tableau croisé dynamique sur chaque fois une feuille de calcul différentes j ai donc pensé à une boucle for mais... www.commentcamarche.net/forum/affich-3432897-probleme-boucle-for-macro-excel
Boucle For "Visual basic" avec le step (Résolu)Bonjour, J'aimerai a partir d'une colonne de chiffre la collée dans une autre colonne mais avec la boucle for et donc utiliser la fonction step, Quelqu'un pourrai m'aider?? bonne journée www.commentcamarche.net/forum/affich-6428619-boucle-for-visual-basic-avec-le-step
[PHP] Boucle for et nom de variable ! (Résolu)Bonjour ... J'ai 7 inputs portant les noms suivants : CHARGES_HH0 CHARGES_HH1 CHARGES_HH2 CHARGES_HH3 CHARGES_HH4 CHARGES_HH5 CHARGES_HH6 Je vous rassure, c'est construit à l'aide d'une boucle for !! Je suis dans un formulaire... www.commentcamarche.net/forum/affich-2439118-php-boucle-for-et-nom-de-variable
Comment lire un fichier ligne par ligneComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier... www.commentcamarche.net/faq/sujet-5027-comment-lire-un-fichier-ligne-par-ligne
Formules Excel de baseVoici quelques formules de bases qui sont faciles à réaliser et qui peuvent donner un peu de vie à une feuille Excel ! Pour cette astuce, on supposera que l’on veut que le résultat s’affiche dans la cellule B10 et on se servira principalement des... www.commentcamarche.net/faq/sujet-8450-formules-excel-de-base
KSH boucle for et paramètres (Résolu)Bonjour j'ai un fichier . KSH qui admait jusqu'à 4 paramètres. Mais j'ai 4 case absolument identique ce qui me donne un code très lourd Ne pourrais je pas raccourcir mon code avec une boucle for? Merci d'avance a tous ceux qui me... www.commentcamarche.net/forum/affich-3138239-ksh-boucle-for-et-parametres
Les boucles for sur matlab (Résolu)Bonjour, help j'ai besoin que vous m'expliquer comment ca fonction les boucles (for) sur matlab je vous remercie infiniment www.commentcamarche.net/forum/affich-4950430-les-boucles-for-sur-matlab
Télécharger LiveProject Free Project ViewerLiveProject est une application de visualisation de fichier mpp gratuit. LiveProject ne présente aucune degradation du fichier mpp lors de l'exportation au format Excel ou html. Avec LiveProject, vous pourrez imprimer vos propres documents.... www.commentcamarche.net/telecharger/telecharger-34056818-liveproject-free-project-viewer
VBScript - Introduction VBScript (aussi appelé Visual Basic Scripting Edition) est un sous-ensemble du langage Visual Basic for Applications (VBA), un langage propriétaire de Microsoft prévu pour être intégré aux produits Microsoft Office©, le langage VBA étant lui-même un... www.commentcamarche.net/vbscript/vbsintro.php3
Toutes les réponses pour « Pb boucle For Excel VBA »