Pb boucle For - Excel VBA
Résolu
Ian Curtis
-
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Pb boucle For - Excel VBA
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
10 réponses
if Cell.Value like *.* then...
là j'ai mis le point, mais si tu utilises la virgule, tu as juste à remplacer.
là j'ai mis le point, mais si tu utilises la virgule, tu as juste à remplacer.
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
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
bonjour,
pour info : la syntaxe d'une boucle For ... Next est :
Ici a = 100 à la fin de la boucle.
;o)
polux
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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.
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
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
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 :
;o)
Polux
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
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