Tom's Guide > Forum > Programmation > [RéSOLU][vba]

[RéSOLU][vba]

Forum Programmation : [RéSOLU][vba]

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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'

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Je suis pas sur mais je crois que c'est comme tu as mis (<> ) sinon c'est peu-etre !=

Répondre à Zermaito

Voila ma fonction en vba:

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) <> ""
nbcol = nbcol + 1
Wend
End Function

mais il me di 'erreur 1004 erreur du a lapplication ou a lobjet'

Répondre à Ayanami

Quelqu'un peut-il m'aider, s'il vous plaît?
Merci

Répondre à Ayanami

hello ,

corrige en faisant :

Code :
  1. Public Function Calcul_max_col() As Integer
  2. Dim col As Integer
  3. Dim li As Integer
  4. Dim nbcol As Integer
  5. col = 1
  6. nbcol = 0
  7. Do while not cells(li, 1) = ""
  8. nbcol = nbcol + 1
  9. Loop
  10. End Function



quoique je prefere tester le nombre de caracteres plutot qu'un possible vide
ce qui donne :

Code :
  1. Public Function Calcul_max_col() As Integer
  2. Dim col As Integer
  3. Dim li As Integer
  4. Dim nbcol As Integer
  5. col = 1
  6. nbcol = 0
  7. Do while len(cells(li, 1)) > 0
  8. nbcol = nbcol + 1
  9. Loop
  10. 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.

Répondre à leghola

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:

Répondre à Ayanami

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 ... :p
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

Répondre à leghola

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

Répondre à Ayanami
Tom's Guide > Forum > Programmation > [RéSOLU][vba]
Aller à :

Il y a 1296 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens