Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

besoin d'aide pour macro Excel

EpineDarK

XLDnaute Nouveau
Bonjour;

je suis nouvelle sur ce site et donc je m'excuses d'avance si , en principe, ma demande aurait due être posé sur un autre espace du forum
je suis débutante en vba et j'ai besoin d'aide svp
j'aimerais creer une macro qui testera les cellules d'une colone ( D par exemple )
si le contenue de la cellule ( D5 par exemple ) n'est est vide, un msgbox se déclenche avec pour texte le contenue de la cellule, sinon, la procédure passe à la colonne D6 jusqu'a ce qu'il y est une cellule vide
ci dessous le code que j'ai testé mais sans succès :

Private Sub Workbook_Open()
Sheets("PROPOSITION").Select
Dim i As Integer
Dim var As String
For i = 5 To range("D", i).End(xlUp).Row
range("D", i).Select
If range("D", i) <> "" Then
var = range("D", i).Value
MsgBox var
End If
Next
End Sub


merci d'avance pour toute aide
 

JCGL

XLDnaute Barbatruc
Re : besoin d'aide pour macro Excel

Bonjour à tous,

Peux-tu essayer :

Option Explicit
Private Sub Workbook_Open()
Dim i As Integer

For i = 5 To Range("D65536").End(xlUp).Row
If Feuil1.Range("D" & i) <> "" Then MsgBox Feuil1.Range("D" & i)
Next
End Sub

A+ à tous

Edition : Salut mon Pierrot...
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : besoin d'aide pour macro Excel

Bonjour,

regarde peut être ceci, mais cela risuqe peut être d'être lourd pour l'utilisateur si nombreuses lignes :
Code:
Dim i As Long
With Sheets("PROPOSITION")
    For i = 5 To .Range("D65536").End(xlUp).Row
        If .Cells(i, 4).Value <> "" Then MsgBox .Cells(i, 4).Value
    Next
End With

bon après midi
@+

Edition : bonjour Jean-Claude
 

Excel-lent

XLDnaute Barbatruc
Re : besoin d'aide pour macro Excel

Bonjour et bienvenu sur le forum EpineDark,

Tu es au bonne endroit : sur la partie "Excel" (il n'y a pas de sous forum : formules / VBA)

Private Sub Workbook_Open()
Sheets("PROPOSITION").Select
Dim i As Integer
Dim var As String
For i = 5 To range("D", i).End(xlUp).Row
range("D", i).Select
If range("D", i) <> "" Then
var = range("D", i).Value
MsgBox var
End If
Next
End Sub

Remarques :

1/ la sélection de la cellule en cours de traitement n'apporte rien au traitement : ormis alourdir le code et le ralentir. Tu peux supprimer cette ligne purement et simplement.

2/ concernant la boucle For... To ... Next, tu l'as écris de la façon suivante :
For TaVariable = ... To ...
...
Next

cela fonctionne et n'est pas faux en soit, mais le mieux est de l'écrire de la façon suivante :

For TaVariable = ... To ...
...
Next TaVariable

Lorsque tu as plusieurs boucles d'imbriqués les unes dans les autres, c'est plus facile pour s'y retrouver

3/ range("D", i).End(xlUp).Row Cette partie du code est franchement bizarre! Le placer ici oblige excel à recalculer la taille de ton tableau à CHAQUE exécution de la boucle. De plus utiliser une cellule "variable"!?!?

4/ range("D", i).End(xlUp).Row De plus, la bonne façon d'écrire est :
range("D" & i).End(xlUp).Row

Il faut entre le nom de la colonne et la variable contenant le numéro de la ligne le symbole "&"

5/ range("D", i).End(xlUp).Row
Autre problème avec ce code : tu utilse la colonne D pour connaître la taille de ton tableau en utilisant la fonction .End(xlUp) or dans l'exposé de ton problème tu indique que cette colonne n'est pas toujours remplis! Donc ta macro ne balayera pas la totalité de ton tableau s'il y a des cellules vide à la FIN de ton tableau.

Pour la macro corrigé, je te laisse d'abord lire tout cela et étudier les solutions laissées par mes confrères (que je salut au passage) le temps que j'écrive ces quelques lignes.

A bientôt
 

Excel-lent

XLDnaute Barbatruc
Re : besoin d'aide pour macro Excel

Re-bonjour,

pourquoi avoir mis cells ( i, 4) ? le 4 précisément ?

Entre les parenthèses :
-> le premier chiffre (contenu dans la variable "i") indique le numéro de la ligne
-> le second chiffre indique le numéro de la colonne : la 4ème, c'est à dire la colonne D

Attention, toutes les propositions faitent par mes confrères ne résolvent pas le problème vu dans le point 5 que j'ai développé ci-dessus.

Bonne après midi
 

EpineDarK

XLDnaute Nouveau
Re : besoin d'aide pour macro Excel

Bonjour à tous
Encore besoin d’aide s’il vous plait
Voici mon problème :
J’essaye de créer une useform avec des textes à enter et les comparer ensuite au contenue d’une cellule
Je m’explique :
A est une colonne de données
Je souhaiterais ( si c’est possible ) créer une petite macro de recherche
Le texte à rechercher sera entré manuellement ( disons texteA) puis lorsque l’on clique sur le bouton ok, la macro parcourt la colonne A
S’il existe une cellule dont le contenue est égale au texteA, alors la macro sélectionne la ligne ( de la cellule )
Autrement une msgbox « erreur » apparaitra
Voici le code que j’ai crée mais sans succès :

Private Sub textA_Change()
'text à ecrire
Dim textA As TextBox
End Sub

Private Sub CommandButton1_Click()
Sheets("CLIENT").Select
Dim i As Integer
Dim textA As TextBox
For i = 3 To range("A65536").End(xlUp).Row
If SocaramSPA1.textA.Value = range("A" & i).Value Then
range("A" & i).Select
Else
MsgBox "erreur"
Unload Me
End If
Next
End Sub

Private Sub UserForm_click()

End Sub


D’avance merci pour toute aide
Bonne journée
 

Excel-lent

XLDnaute Barbatruc
Re : besoin d'aide pour macro Excel

Bonjour EpineDark,

Comme dit juste au dessus, avec ton fichier nous pourrions te répondre plus facilement et plus précisement.

A défaut :
1/
EpineDarK à dit:
S’il existe une cellule dont le contenue est égale au texteA, alors la macro sélectionne la ligne ( de la cellule )

Alors pourquoi avoir écrit : range("A" & i).Select ?

Personnelement j'aurais écris : Rows(i).Select

2/ concernant le bon fonctionnement de ta macro :

Pour ma part, à première vu (sans fichier), je ne vois rien de bizarre. Si tu peux nous envoyer le fichier se serait mieux.

Bonne après midi
 

Discussions similaires

Réponses
4
Affichages
347
Réponses
6
Affichages
407
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…