[RéSOLU][vba]
Dernière réponse : dans Programmation
Bonjour.
J'ai un vilain trou de mémoire.
Je dois écrire:
Tant que cellule(1,col)<>"" Faire
col = col+1
FinTTQue
en vba mais je ne me souvient plus comment écrire le 'pas égal'
J'ai un vilain trou de mémoire.
Je dois écrire:
Tant que cellule(1,col)<>"" Faire
col = col+1
FinTTQue
en vba mais je ne me souvient plus comment écrire le 'pas égal'
Autres pages sur : resolu vba
Lassé par la pub ? Créez un compte
hello ,
corrige en faisant :
quoique je prefere tester le nombre de caracteres plutot qu'un possible vide
ce qui donne :
Malgré tout quoiqu'il arrive tu est dans une boucle infinie... Tu testes une cellule qui varie suivant li mais tu ne fais pas varier li mais nbcol, comment diable si tu rentres dans ta boucle, pourras tu en sorir ??
++
Nico.
corrige en faisant :
Public Function Calcul_max_col() As Integer Dim col As Integer Dim li As Integer Dim nbcol As Integer col = 1 nbcol = 0 Do while not cells(li, 1) = "" nbcol = nbcol + 1 Loop End Function
quoique je prefere tester le nombre de caracteres plutot qu'un possible vide
ce qui donne :
Public Function Calcul_max_col() As Integer Dim col As Integer Dim li As Integer Dim nbcol As Integer col = 1 nbcol = 0 Do while len(cells(li, 1)) > 0 nbcol = nbcol + 1 Loop End Function
Malgré tout quoiqu'il arrive tu est dans une boucle infinie... Tu testes une cellule qui varie suivant li mais tu ne fais pas varier li mais nbcol, comment diable si tu rentres dans ta boucle, pourras tu en sorir ??
++
Nico.
Merci Nico pour ton aide (ma boucle est en effet infinie).
Cependant là je crie "Au Secours" car cela ne fonctionne toujours pas.
Je vous envoie donc mes 3 fonctions, car je ne sais pas d'où vient mon erreur:
Public Function Calcul_max_li() As Integer
Dim li As Integer
Dim col As Integer
Dim nbli As Integer
li = 1
While (cells(1, col).Value) <> ""
nbli = nbli + 1
li = li + 1
Wend
End Function
Public Function Calcul_max_col() As Integer
Dim col As Integer
Dim li As Integer
Dim nbcol As Integer
col = 1
nbcol = 0
While cells(li, 1).Value <> ""
nbcol = nbcol + 1
Wend
End Function
et le programme principal:
Private Sub CommandButton1_Click()
Dim li As Integer
Dim col As Integer
Dim i As Integer
Dim colrech As Integer
Dim trouve As Boolean
MaxLi = Calcul_max_li()
MaxCol = Calcul_max_col()
For li = 2 To MaxLi
For col = 2 To MaxCol
If cells(li, col) = "" Then
colrech = col + 1
trouve = False
While colrech <= MaxCol And Not trouve
If cells(li, col) <> "" Then
trouve = True
Else
colrech = colrech + 1
End If
Wend
If trouve Then
cells(li, col).Value = (cells(li, colrech).Value - cells(li, col - 1).Value) / colrech
End If
End If
Next
Next
End Sub
mon erreur est toujours la même: il souligne en jaune la phrase:
While (cells(1, col).Value) <> ""
et me dit 'erreur 1004 - erreur définie par l'application ou par l'objet'.
Voilà, s'il vous plaît je suis déséspérée, j'ai rendez-vous à 14h00 avec mon maître de stage pour lui montrer mon application!!!
Merci d'avance pour votre aide.
AU SECOURS!!!! :crying: :snif:
Cependant là je crie "Au Secours" car cela ne fonctionne toujours pas.
Je vous envoie donc mes 3 fonctions, car je ne sais pas d'où vient mon erreur:
Public Function Calcul_max_li() As Integer
Dim li As Integer
Dim col As Integer
Dim nbli As Integer
li = 1
While (cells(1, col).Value) <> ""
nbli = nbli + 1
li = li + 1
Wend
End Function
Public Function Calcul_max_col() As Integer
Dim col As Integer
Dim li As Integer
Dim nbcol As Integer
col = 1
nbcol = 0
While cells(li, 1).Value <> ""
nbcol = nbcol + 1
Wend
End Function
et le programme principal:
Private Sub CommandButton1_Click()
Dim li As Integer
Dim col As Integer
Dim i As Integer
Dim colrech As Integer
Dim trouve As Boolean
MaxLi = Calcul_max_li()
MaxCol = Calcul_max_col()
For li = 2 To MaxLi
For col = 2 To MaxCol
If cells(li, col) = "" Then
colrech = col + 1
trouve = False
While colrech <= MaxCol And Not trouve
If cells(li, col) <> "" Then
trouve = True
Else
colrech = colrech + 1
End If
Wend
If trouve Then
cells(li, col).Value = (cells(li, colrech).Value - cells(li, col - 1).Value) / colrech
End If
End If
Next
Next
End Sub
mon erreur est toujours la même: il souligne en jaune la phrase:
While (cells(1, col).Value) <> ""
et me dit 'erreur 1004 - erreur définie par l'application ou par l'objet'.
Voilà, s'il vous plaît je suis déséspérée, j'ai rendez-vous à 14h00 avec mon maître de stage pour lui montrer mon application!!!
Merci d'avance pour votre aide.
AU SECOURS!!!! :crying: :snif:
smurf,
1. pourquoi tu t'entetes a mettre " <> " alors que tu devrais mettre " not = "
2. cells(x,y).value ne sert a rien, prends juste cells(x,y) => le .value renvoi (parfois) des erreurs.
3. plutot que du while ... wend utilise le do ... loop, plus fiable, plus rapide, plus pratique
la syntaxe est la meme : do While ... loop
4. je comprends rien a ton programme ...
les boucles sont infinies, tes fonctions ne renverrons rien vu que tu ne mets rien dedans, tu dimensionnes 3 fois les memes variables, etc. Je vais etre méchant mais prends ca pour t'améliorer, ce truc est a recommencer a zéro.
contacte moi pour de plus amples infos :
leghola2 at hotmail.com
1. pourquoi tu t'entetes a mettre " <> " alors que tu devrais mettre " not = "
2. cells(x,y).value ne sert a rien, prends juste cells(x,y) => le .value renvoi (parfois) des erreurs.
3. plutot que du while ... wend utilise le do ... loop, plus fiable, plus rapide, plus pratique
la syntaxe est la meme : do While ... loop
4. je comprends rien a ton programme ...
les boucles sont infinies, tes fonctions ne renverrons rien vu que tu ne mets rien dedans, tu dimensionnes 3 fois les memes variables, etc. Je vais etre méchant mais prends ca pour t'améliorer, ce truc est a recommencer a zéro.
contacte moi pour de plus amples infos :
leghola2 at hotmail.com
Hello!
Bon eh bien voilà g recommencé à zéro et voilà mes fonctions:
Function Calcul_max_col()
Dim col As Integer
Dim li As Integer
col = 1
While cells(1, col) <> ""
col = col + 1
Wend
Calcul_max_col = col - 1
'MsgBox (Calcul_max_col)
End Function
Function Calcul_max_li()
Dim col As Integer
Dim li As Integer
li = 1
While cells(li, 1) <> ""
li = li + 1
Wend
Calcul_max_li = li - 1
'MsgBox (Calcul_max_li)
End Function
Sub CommandButton1_Click()-->programme principal
Dim li As Long
Dim col As Long
Dim nbrecase As Long
Dim casedepart As Long
Dim pas As Long
colrech = 1
MaxLi = Calcul_max_li()
MaxCol = Calcul_max_col()
For li = 2 To MaxLi
For col = 2 To MaxCol
If cells(li, col) = "" Then
casedepart = col
nbrecase = 0
While col <= MaxCol And cells(li, col) = ""
col = col + 1
nbrecase = nbrecase + 1
'MsgBox ("casedepart" & casedepart & "nbrecase" & nbrecase)
Wend
If col < MaxCol + 1 And casedepart > 2 Then
pas = (cells(li, col) - cells(li, casedepart - 1)) / (nbrecase + 1)
'MsgBox ("pas" & pas)
Else
pas = 1234
'MsgBox ("pas" & pas)
End If
If casedepart > 2 And col < MaxCol + 1 Then
While casedepart < col
cells(li, casedepart) = cells(li, casedepart - 1) + pas
casedepart = casedepart + 1
Wend
End If
End If
Next
Next
End Sub
Elles fonctionnent très bien dans tous les cas et mon maître de stage est très content!
Merci quand même de m'avoir aider (et de ta franchise...:-) )
Bisous
Bon eh bien voilà g recommencé à zéro et voilà mes fonctions:
Function Calcul_max_col()
Dim col As Integer
Dim li As Integer
col = 1
While cells(1, col) <> ""
col = col + 1
Wend
Calcul_max_col = col - 1
'MsgBox (Calcul_max_col)
End Function
Function Calcul_max_li()
Dim col As Integer
Dim li As Integer
li = 1
While cells(li, 1) <> ""
li = li + 1
Wend
Calcul_max_li = li - 1
'MsgBox (Calcul_max_li)
End Function
Sub CommandButton1_Click()-->programme principal
Dim li As Long
Dim col As Long
Dim nbrecase As Long
Dim casedepart As Long
Dim pas As Long
colrech = 1
MaxLi = Calcul_max_li()
MaxCol = Calcul_max_col()
For li = 2 To MaxLi
For col = 2 To MaxCol
If cells(li, col) = "" Then
casedepart = col
nbrecase = 0
While col <= MaxCol And cells(li, col) = ""
col = col + 1
nbrecase = nbrecase + 1
'MsgBox ("casedepart" & casedepart & "nbrecase" & nbrecase)
Wend
If col < MaxCol + 1 And casedepart > 2 Then
pas = (cells(li, col) - cells(li, casedepart - 1)) / (nbrecase + 1)
'MsgBox ("pas" & pas)
Else
pas = 1234
'MsgBox ("pas" & pas)
End If
If casedepart > 2 And col < MaxCol + 1 Then
While casedepart < col
cells(li, casedepart) = cells(li, casedepart - 1) + pas
casedepart = casedepart + 1
Wend
End If
End If
Next
Next
End Sub
Elles fonctionnent très bien dans tous les cas et mon maître de stage est très content!
Merci quand même de m'avoir aider (et de ta franchise...:-) )
Bisous
Lassé par la pub ? Créez un compte
- Contenus similaires :
- Forum[Résolu] VBA/Access : Affichage de données sur activation d'un formulaire
- Solutions[VBA] Erreur requete SQL et cellules
- Solutions[VBA] Probleme requete SQL
- Solutions[VBA] probleme requete SQL
- Solutions[VBA] Récupérer nom fichier lié d'une cellule
- Solutions[VBA] boucle sur une listview
- Solutions[VBA] Savoir si le classeur contient des macros
- Solutions[VBA] requete SQL
- SolutionsRESOLU Bonjour, comment debloquer mon Messenger Edition 251 by SFR ? IMEI 357930031397943 Urgent!!!!
- Voir plus