<p:dataTable value="#{gestionComptes.allComptes}" var="item"
             tableStyle="width:auto" >
    <p:column width="40">
        <f:facet name="header">
            <h:outputText value="Id"/>
        </f:facet>
        <h:outputText value="#{item.id}"/>
    </p:column>
    <p:column width="300">
        <f:facet name="header">
            <h:outputText value="Nom"/>
        </f:facet>
        <h:outputText value="#{item.nom}"/>
    </p:column>
    <p:column style="text-align:right;" width="60">
        <f:facet name="header">
            <h:outputText value="Solde"/>
        </f:facet>
        <h:outputText value="#{item.solde}">
            <f:convertNumber pattern="###,###,##0"/>
        </h:outputText>
    </p:column>
</p:dataTable>

Remarque : Quand on réduit la taille d’une table PrimeFaces, par exemple avec tableStyle="width:auto", l'en-tête de la table (qui peut contenir les boutons pour passer de page en page si on ajoute paginator="true" dans <p:dataTable>) occupe encore toute la largeur de la page.

Si c'est gênant, 2 solutions :