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

Problème fonction Range(Cells(Ligne, 1), Cells(Ligne, Colonne))

  • Initiateur de la discussion Initiateur de la discussion nicoco3101
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

nicoco3101

Guest
Bonjour,

je n'arrive pas à faire fonctionner cette partie de VBA:

Ligne = 2
Colonne = 4

While Cells(Ligne, Colonne) <> Empty
If Range(Cells(Ligne, 1), Cells(Ligne, Colonne)).ColumnWidth > 146 Then
Cells(253, 1) = "marge dépassé"
Else
Cells(254, 1) = "marge ok"
End If
Colonne = Colonne + 1
Wend


En effet mon but est de dire tant que les cellules(ligne,colonne) ne sont pas vide alors:

si la somme de la largeur totale de ces cellules(non vides) est >146
"marge de la pâge dépassée"
sinon
"marge ok"


C'est la fontion Range(Cells(Ligne, 1), Cells(Ligne, Colonne)) qui me pose problème...

J'espère que vous pourrez m'aider

Cordialement
 
Re : Problème fonction Range(Cells(Ligne, 1), Cells(Ligne, Colonne))

Bonjour le forum, bonjour nicoco

Peut être comme ceci:
Range(Cells(Ligne, 1).address & ":" & Cells(Ligne, Colonne).address)
Je n'ai pas testé...

Bon aprés midi,

Ninibihan
 
Re : Problème fonction Range(Cells(Ligne, 1), Cells(Ligne, Colonne))

Bonjour,

pour ne pas rester dans une virée interminable :
Code:
Sub test()
  Ligne = 2
  Colonne = 4
  n = 0
  [A253:A254].ClearContents
  While Cells(Ligne, Colonne) <> Empty
    n = n + Cells(Ligne, Colonne).ColumnWidth
    Colonne = Colonne + 1
  Wend
  If n > 146 Then
    [A253] = "marge dépassée de " & n - 146
  Else
    [A254] = "marge ok, reste  " & 146 - n
  End If
End Sub
 
Re : Problème fonction Range(Cells(Ligne, 1), Cells(Ligne, Colonne))

J'ais remagné la version de Jean-Marcel et j'y suis parvenu, enfin !!! merci beaucoup =)

Voilà ce que ça donne:

Ligne = 2
Colonne = 1
While Cells(Ligne, Colonne) <> Empty

SommeDesColonnes = SommeDesColonnes + Cells(Ligne, Colonne).ColumnWidth
Colonne = Colonne + 1

Wend

If SommeDesColonnes > 140 Then
Cells(253, 1) = "marge dépassé"
Else
Cells(254, 1) = "marge ok"
End If


Mes cellule(ligne, 2) et cellule(ligne,3) étaient vides, je les ais remplie avec un texte blanc afin de me faciliter la chose. et cela marche je suis vraiment content.

Merci Lii pour votre réponse mais les cellules (253,1) et (254,1) me servaient de tests.

J'aimerais maintenant afficher ces textes en message, admettons une fenêtre qui s'ouvre temporairement. Est-ce possible?


Encore merci de votre aide
 
Re : Problème fonction Range(Cells(Ligne, 1), Cells(Ligne, Colonne))

Bonjour à tous,

Construit un petit userForm avec un label nommé ici LabelMsg dans lequel tu afficheras le message que tu veux.
Tu appelles la macro comme ceci

PetitMessage "Cette fenêtre se fermera dans quelques secondes", 3

Code:
Sub PetitMessage(StrMessage as String, Optional Secondes as byte = 2)
    Dim t
    UserForm1.LabelMsg = strMessage
    UserForm1.Show vbModeless
    t = Time()
    Do
        DoEvents
    Loop While Time < t + TimeSerial(0, 0, [B]Secondes[/B])
    Unload UserForm1
End Sub

A+
 
Re : Problème fonction Range(Cells(Ligne, 1), Cells(Ligne, Colonne))

Merci Hasco de votre aide,

Mais je ne comprends pas grand chose hihi

est-ce possible d'afficher un message a la suite d'une condition SI?

ou même tout simplement ouvrir un fichier bloc note avec écrit " le message souhaité"
 
Re : Problème fonction Range(Cells(Ligne, 1), Cells(Ligne, Colonne))

Re bonjour,

La solution de Jean-Marcel est pas mal et t'évite la construction d'un userForm.

Sinon:

Code:
Sub TaMacro()
Ligne = 2
Colonne = 1
While Cells(Ligne, Colonne) <> Empty
SommeDesColonnes = SommeDesColonnes + Cells(Ligne, Colonne).ColumnWidth
Colonne = Colonne + 1
Wend
If SommeDesColonnes > 140 Then
    PetitMessage "Marges dépassées", 3
Else
    PetitMessage "Marges Ok", 3
End If
 
End Sub
 
Sub PetitMessage(StrMessage As String, Optional Secondes As Byte = 2)
    Dim t
    Beep
    UserForm1.LabelMsg = StrMessage
    UserForm1.Show vbModeless
    t = Time()
    Do
        DoEvents
    Loop While Time < t + TimeSerial(0, 0, Secondes)
    Unload UserForm1
End Sub

A+

[Edition] Salut Jean-Marcel😀
 
Re : Problème fonction Range(Cells(Ligne, 1), Cells(Ligne, Colonne))

Oui celle de Jean-Marcel me va très bien.

Mais par curiosité, comment fais ton L'userform.
J'aimerais voir comme fonctionne la votre mais on me signal une erreur concernant Label.Msg...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
367
Réponses
2
Affichages
582
D
Réponses
4
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…